Maven 构建配置文件激活

Maven Build Profile Activation

我知道有一些相关的主题,但我还是不明白该怎么做。

我正在学习 Maven,目前正在创建构建配置文件。我希望 Maven 自动检测我机器上当前安装的 java 版本。假设我在使用 (jdk7) 或家庭 (jdk8) 的办公室工作,我想要 [=] 中的 <source><target> 元素14=] 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>

您好,我不认为您可以让您的构建环境自动感知,仅使用默认值,您需要配置文件及其激活功能的一些帮助,请参阅 here。你可以做的是引入 2 个不同的配置文件,在每个配置文件中你可以定义你想要的 JDK,如果存在,它将为你激活,然后你可以配置具有不同源/目标的编译器插件,或者,只需为将指示 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>

希望对您有所帮助:)

您需要声明两个互斥的配置文件,一个用于 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 配置文件。但另一种选择是拥有一个始终打开的配置文件,但在 ~/.m2/settings.xml 文件中以不同方式为配置文件定义 jdk.version 属性。办公室的 settings.xml 文件将具有 jdk7 个属性;在家里它会 jdk8.

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

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