WildFly App Dev: как отразить путь к классам во время разработки? - PullRequest
1 голос
/ 03 июня 2019

Я работаю над проектом, который развернут как .war WebApp на одном экземпляре WildFly 16.

Используя IntelliJ Idea UE с Maven в качестве среды разработки, я спрашиваю себя, как отразить путь к классу, который развернутое приложение увидит во время выполнения в пути к классам разработки во время разработки.

Я прочитал о неявных зависимостях в Руководстве разработчика. Поэтому я прихожу к выводу, что путь к классам моего развертывания будет содержать элементы из столбца «Зависимости, которые всегда добавляются», а также элементы, которые добавляются в условиях триггера (в моем случае это Weld, Web, Hibernate, Resteasy, EJB3).

Как определить, какие артефакты Maven необходимо импортировать, чтобы мой путь к классу разработки равнялся пути к классу времени выполнения моего WebApp?

Я хотел бы разрешить конфликты зависимостей во время разработки, а не во время выполнения.

1 Ответ

0 голосов
/ 04 июня 2019

Для этого вы можете использовать спецификацию WildFly 16 (BOM) .Я уверен, что вам хорошо известна функция Maven импорта для артефактов типа POM .Если это не так, добавьте эти строки в Maven pom.xml:

<dependencyManagement>
  <dependencies>
      <dependency>
        <groupId>org.wildfly.bom</groupId>
        <artifactId>wildfly-javaee8</artifactId>
        <version>16.0.0.Final</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

. Он позволяет вам ссылаться на большинство артефактов WildFly (или, по крайней мере, на соответствующие) кака также артефакты спецификации Java EE 8.Вот пример:

<dependencies>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>org.jboss.spec.javax.servlet</groupId>
    <artifactId>jboss-servlet-api_4.0_spec</artifactId>
    <scope>provided</scope>
  </dependency>
</dependencies>
<!-- And so on... -->

Вам все еще нужно перечислить все зависимости, которые вам требуются.Если у вас есть дополнительные зависимости (не предоставленные WildFly), вы должны упаковать их в WAR или EAR .Таким образом, вы не должны получать никаких конфликтов.

О, и еще одна вещь, потому что вы упомянули несколько зависимостей, которые специфичны для WildFly (например, Weld и Hibernate): Попробуйте придерживаться API Java EE, где это возможно.Это позволяет при необходимости быстрее переносить приложение на другие серверы приложений.

...