Использование разных спецификаций JBoss в профилях
У меня есть общий вопрос об использовании спецификации от JBoss и WildFly. Есть ли способ построить проект для JBoss 7 и WildFly 10, используя другой профиль?
Я попытался скопировать определение спецификации из WildFly в такой профиль:
<profile>
<id>WildFly10</id>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.bom</groupId>
<artifactId>wildfly-javaee7-with-tools</artifactId>
<version>${version.jboss.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- JSON -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>${version.json}</version>
</dependency>
</dependencies>
</dependencyManagement>
</profile>
Конечно, в соответствии с профилем JBoss7.
Но таким образом он не добавит важные библиотеки в папку lib, т.е. это определение находится в наушниках, а подпроект (war) добавляет зависимость json. Без профиля maven добавляет json jar в папку lib, но не в том случае, если я помещаю его в профиль.
После того, как я прочитал, что изменение зависимостей в профиле - это анти-паттерн [ 1], я хотел бы знать, как я могу построить свой проект для JBoss7 и WildFly 10.
Обновить
Хорошо, извините за этот быстрый вопрос. Вот больше подробностей.
структура проекта:
|-parent (pom)
|- myapp (war)
|- core (jar)
|- deployment (ear)
Так deployment
это проект строительства всего уха, содержащего myapp
в качестве веб-приложения и core
как библиотека. myapp
имеет зависимость от core
а также core
в json
,
Чтобы иметь все необходимые зависимости с правильной версией, я включил wildfly-javaee7-with-tools
в зависимости от управления. Также версия json
определены там. core
проект имеет json
библиотека как нормальная зависимость.
На данный момент это должно быть вполне стандартным. Но дело в том, что я хочу иметь возможность собирать для JBoss 7 и WildFly 10 то, что я должен изменить
<dependency>
<groupId>org.wildfly.bom</groupId>
<artifactId>wildfly-javaee7-with-tools</artifactId>
<version>${version.jboss.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
в
<dependency>
<groupId>org.jboss.bom</groupId>
<artifactId>jboss-javaee-6.0-with-tools</artifactId>
<version>${version.jboss.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Конечно ${version.jboss.bom}
будет изменен с 10.1.0.Final
для WildFly, чтобы 1.0.7.Final
для JBoss.
Для этого я попытался двигаться wildfly-javaee7-with-tools
в профиль. Моим первым предположением было перенести эту зависимость только в профиль. Но тогда json
баночка не включается После этого я тоже пытался двигаться json
как выше.
1 ответ
Не видя оригинального непрофилированного или профилированного пома в целом, не могу сказать ничего точного, но образованного догадки.
У тебя есть json
в профилях управление зависимостями.
Это также в pom
Основные зависимости без версии? Если нет, он не будет скопирован в lib или упакован. Управляется только профилями <dependencyManagement>
,
Есть ли json
нужно управлять по профилю? Кажется, есть ${version.json}
который в любом случае будет одинаковым для каждого профиля, если он скопирован, как в примере.
Для меня кажется, что исправить может быть то, что вы удалите json
из профилей dependencyManagement и добавьте его к основным зависимостям как обычную зависимость - это просто для того, чтобы сделать профилирование более простым - им можно управлять, но при необходимости установите версию json
непосредственно к зависимости.