我知道有一些相关的主题,但我仍然无法理解如何做到这一点。
我正在学习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>
答案 0 :(得分:2)
您好我不认为您可以自动获取您的构建,环境,仅使用默认值,您需要一些配置文件及其激活功能的帮助,请参阅here。你可以做的是介绍2个不同的配置文件,在每个配置文件中你可以定义你想要的JDK,它将被激活为你的if,然后你可以配置不同源/目标的编译器插件,或者只是设置不同的值对于要指示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>
希望有所帮助:)
答案 1 :(得分:1)
对于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>
答案 2 :(得分:0)
您需要声明两个互斥的配置文件,一个用于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检测激活工作时遇到任何问题,我建议尝试使用显式触发器,例如使用mvn -P jdk7
调用maven。
根据它的声音,您需要在pom.xml
中定义jdk7和jdk8配置文件。但另一种选择是使一个配置文件始终打开,但在jdk.version
文件内部以不同的方式定义配置文件的~/.m2/settings.xml
属性。办公室的settings.xml文件将具有jdk7属性;在家里它会有jdk8。
http://maven.apache.org/guides/introduction/introduction-to-profiles.html