Maven构建配置文件激活

时间:2016-01-05 03:31:22

标签: java maven maven-plugin maven-profiles

我知道有一些相关的主题,但我仍然无法理解如何做到这一点。

我正在学习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 个答案:

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