如何基于$ JAVA_HOME env变量自动设置Maven编译器插件?

时间:2015-06-05 15:19:44

标签: environment-variables maven-3 java-home maven-compiler-plugin

我正在使用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。

感谢您提供有关如何进行此设置的建议和示例。

2 个答案:

答案 0 :(得分:0)

Guide to building for different environments using Profiles

为不同的环境构建相同的工件一直是一个烦恼。您有多个环境,例如测试和生产服务器,或者可能是一组运行具有不同配置的相同应用程序的服务器。在本指南中,我将解释如何使用配置文件来构建和打包为特定环境配置的工件。有关配置文件概念的更深入说明,请参阅Introduction to Build Profiles

答案 1 :(得分:0)

正如Jarrod指出的那样,解决方案是使用profiles。使用maven docs提供的示例。

  

可以根据检测到的状态自动触发配置文件   构建环境。这些触发器通过一个指定    配置文件本身的部分。目前,这种检测   仅限于JDK版本的前缀匹配,存在一个   系统属性或系统属性的值。这里有一些   实例

     

以下配置将在JDK时触发配置文件   版本以&#34; 1.4&#34;开头(例如,&#34; 1.4.0_08&#34;,&#34; 1.4.2_07&#34;,&#34; 1.4&#34;):

请参阅下面与您的示例和maven doc示例合并的示例。

<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>