我正在使用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。
感谢您提供有关如何进行此设置的建议和示例。
答案 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>