Maven Build Профиль Активация
Я знаю, что есть некоторые связанные темы, но все еще не могу понять, как это сделать.
Я учусь Maven и в настоящее время в процессе создания профилей сборки. Я хочу, чтобы maven автоматически определял установленную версию Java на моем компьютере. Допустим, я работаю в нашем офисе, который использует (JDK7) или дома (jdk8)
, Я хочу <source>
а также <target>
элементы в maven-compiler-plugin
pom.xml для автоматического определения java -version
независимо от среды (офис / дом). Я читал о activation
но не могу полностью понять цель.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
</plugins>
</build>
3 ответа
Привет, я не думаю, что вы можете автоматически настроить свою сборку, среду, просто используя значения по умолчанию, вам нужна помощь профилей и возможность их активации, см. Здесь. Что вы можете сделать, это ввести 2 разных профиля, в каждом профиле вы можете определить JDK, который вы хотите, и он будет активирован для вашего, если он есть, тогда вы можете настроить либо плагин компилятора с другим источником / целью, либо просто установить разные значения для свойства, которое будет указывать на версию Java. Пример:
<profiles>
<profile>
<id>java8</id>
<activation>
<jdk>1.8</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>java7</id>
<activation>
<jdk>1.7</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Надеюсь, это поможет:)
Для Java 9 могут использоваться следующие профили.
<profiles>
<profile>
<id>java8</id>
<activation>
<jdk>1.8</jdk>
</activation>
(...)
</profile>
<profile>
<id>java9</id>
<activation>
<jdk>9</jdk>
</activation>
(...)
</profile>
</profiles>
Вы захотите объявить два взаимоисключающих профиля: один для сборок jdk7 и один для сборок jdk8. Каждая декларация профиля состоит из двух важных частей:
activation
элемент похож на условный, и вложен в. Ваш профиль включен или выключен? Вы хотите настроить jdk
на основе активации. Пример для вашего профиля jdk7:
<activation>
<jdk>1.7</jdk>
</activation>
Затем вы захотите определить свойство или свойства, которые устанавливаются, когда ваш профиль активен. Пример для jdk7:
<properties>
<jdk.version>1.7<jdk.version>
</properties>
Оба этих раздела объединяются с id
элемент (например, <id>jdk7</id>
) и вложены в profile
элемент.
Если у вас возникнут проблемы с активацией активации обнаружения jdk, я бы предложил поэкспериментировать с явным триггером, таким как вызов maven с mvn -P jdk7
,
Исходя из этого, вы хотите, чтобы в вашем профиле были определены профили jdk7 и jdk8. pom.xml
, Но другой вариант - иметь один профиль, который всегда включен, но определить jdk.version
свойство для профиля по-другому внутри вашего ~/.m2/settings.xml
файл. Файл settings.xml в офисе будет иметь свойства jdk7; дома было бы jdk8.
http://maven.apache.org/guides/introduction/introduction-to-profiles.html