Как автоматически установить плагин компилятора Maven на основе переменной env $ JAVA_HOME?

Я использую Maven 3.2.3. У меня есть многомодульный проект, и в настоящее время мой плагин компилятора Maven установлен как таковой.

                    <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <version>3.1</version>
                            <configuration>
                                    <source>1.6</source>
                                    <target>1.6</target>
                                    <compilerArgument>-proc:none</compilerArgument>
                                    <fork>true</fork>
                                    <!-- <debug>true</debug> <debuglevel>none</debuglevel> -->
                            </configuration>
                            <executions>
                                    <execution>
                                            <id>default-testCompile</id>
                                            <phase>test-compile</phase>
                                            <goals>
                                                    <goal>testCompile</goal>
                                            </goals>
                                    </execution>
                            </executions>
                    </plugin>

Мне интересно, как я могу установить версию компилятора на основе переменной $JAVA_HOME в моей системе, то есть, если $JAVA_HOME указывает на установку Java 6, мой компилятор Maven будет использовать «1.6» в качестве источника и цели. Точно так же, если мой $JAVA_HOME указывает на установку Java 7, источником и целью будет «1.7» и так далее. Если в среде не установлен $JAVA_HOME, я бы хотел, чтобы компилятор по умолчанию использовал версию 1.6.

Спасибо за советы и примеры, как это настроить.


person Dave A    schedule 05.06.2015    source источник


Ответы (2)


Как указал Джаррод, решение заключается в использовании профилей. Используя пример, предоставленный документами maven.

Профили могут запускаться автоматически на основе обнаруженного состояния среды сборки. Эти триггеры указываются в разделе самого профиля. В настоящее время это обнаружение ограничивается соответствием префикса версии JDK, наличием системного свойства или значением системного свойства. Вот несколько примеров.

Следующая конфигурация активирует профиль, когда версия JDK начинается с «1.4» (например, «1.4.0_08», «1.4.2_07», «1.4»):

См. пример ниже, объединенный с вашим примером и примером документа maven.

<profiles>
    <profile>
    <activation>
      <jdk>1.6</jdk>
    </activation>
    <build>
        <plugins>
            <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                            <source>1.6</source>
                            <target>1.6</target>
                            <compilerArgument>-proc:none</compilerArgument>
                            <fork>true</fork>
                            <!-- <debug>true</debug> <debuglevel>none</debuglevel> -->
                    </configuration>
                    <executions>
                            <execution>
                                    <id>default-testCompile</id>
                                    <phase>test-compile</phase>
                                    <goals>
                                            <goal>testCompile</goal>
                                    </goals>
                            </execution>
                    </executions>
            </plugin>
        </plugins>
    </build>
    </profile>
</profiles>
person Atilla Ozgur    schedule 09.06.2015

Руководство по созданию различных сред с использованием профилей

Создание одного и того же артефакта для разных сред всегда вызывало раздражение. У вас есть несколько сред, например, тестовые и рабочие серверы или, возможно, набор серверов, на которых работает одно и то же приложение с разными конфигурациями. В этом руководстве я объясню, как вы можете использовать профили для создания и упаковки артефактов, настроенных для конкретных сред. Более подробные сведения о Концепция профиля.

person Community    schedule 08.06.2015
comment
Все еще не делая логический скачок здесь - как мои настройки $ JAVA_HOME в моей оболочке bash активируют профиль? Вы также предлагаете мне создать один отдельный профиль для каждой мыслимой версии Java? - person Dave A; 09.06.2015
comment
Вы читали о <activation> профилей? там все очень подробно описано. - person ; 09.06.2015