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

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