Использование разных спецификаций 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 непосредственно к зависимости.

Другие вопросы по тегам