У нас есть общекорпоративный Super Pom, который мы используем для определения многих используемых нами значений по умолчанию. Например, Super Pom определяет используемую версию JDK и другие параметры. Это наследуется нашими проектами как родительский pom.
В большинстве наших проектов используется JDK 1.7, но один набор проектов все еще использует версию JDK 1.6. Я поместил следующие определения профиля в свой родительский pom:
<properties>
<travelclick.snapshot.repo>artifactory/libs-snapshot-local</travelclick.snapshot.repo>
<old.javac.source>1.5</old.javac.source>
<old.javac.target>1.6</old.javac.target>
</properties>
<profiles>
...
<profile>
<id>jdk1.6</id>
<build>
<plugins>
<plugin>
<groupId>com.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<...>
<source>${old.javac.source}</source>
<target>${old.javac.target}</target>
<...>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<...>
</profiles>
Теперь у меня есть профиль с именем jdk1.6
, и я хотел бы указать в pom проекта, что он должен использовать этот профиль по умолчанию. Как мне это сделать?
Я попытался добавить в pom проекта:
<profiles>
<profile>
<id>jdk1.6</id>
<activations>
<activeByDefault>true</activeByDefault>
</activations>
</profile>
</profile>
Но это переопределяет мой профиль jdk1.6.
Я пытался вставить это:
<activeProfiles>
<activeProfile>jdk1.6</activeProfile>
</activeProfiles>
Но это работает только в settings.xml
.
Как мне указать профиль в родительском pom, а затем сказать, что это активный профиль в дочернем pom?
Больше попыток
Я пробовал использовать свойства. В моем родительском файле pom.xml:
<profiles>
<profile>
<id>jdk1.6</id>
<activation>
<property>
<name>use-jdk1.6</name>
</property>
</activation>
<profile>
</profiles>
И следующее в моем локальном pom:
<properties>
<use-jdk1.6>true</use-jdk1.6>
</properties>
Но он не поднимает профиль. И это работает:
$ mvn -Puse-jdk1.6 clean package site
Итак, я знаю, что родительские профили работают.
Профили
Не могли бы вы добавить данные своего профиля, выполнив цель help:all-profiles
[INFO] Listing Profiles for Project: xxxx
Profile Id: artifactory (Active: true , Source: settings.xml)
Profile Id: jdk1.6 (Active: false , Source: pom)
Profile Id: arse-version (Active: false , Source: pom)
Profile Id: urge (Active: false , Source: pom)
Я могу активировать jdk1.6 из командной строки. Я просто хочу активировать его по умолчанию в своих дочерних помпонах.
javac.source
дляsource
иjavac.target
дляtarget
изmaven-compiler-plugin
. Затем вы можете позволить дочернему POM определить два свойства, когда им нужно другое, чем значение по умолчанию (которое родитель установит на1.7
). - person Tunaki   schedule 04.11.2016<plugin>
сmaven-compiler-plugin
в своих дочерних помпонах. Это добавляет некоторую сложность и много дублирования между pom. Я думал, что решение этой проблемы через родительский pom сделает ее проще. - person David W.   schedule 04.11.2016