您现在的位置是:首页 > 名人名句

maven在settings.xm和pom.xml中指定jdk版本编译

作者:淼淼时间:2024-04-20 13:01:16分类:名人名句

简介  文章浏览阅读2k次。settings.xml 中的属性写在 setting

点击全文阅读

maven的settings.xm和pom.xml都可以通过 maven.compiler.source , maven.compiler.target 这两个属性值来指定jdk版本

maven.compiler.source

maven.compiler.target

maven.compiler.source
maven.compiler.target

在pom.xml中的位置

<project>  <properties>    <maven.compiler.source>21</maven.compiler.source>    <maven.compiler.target>21</maven.compiler.target>  </properties></project>

在settings.xml中的位置

<settings>    <profiles>        <profile>            <activation>                <activeByDefault>true</activeByDefault>            </activation>            <properties>                <maven.compiler.source>21</maven.compiler.source>                <maven.compiler.target>21</maven.compiler.target>  <!-- JRE System Liblary 的版本和这句相同  -->            </properties>        </profile>    </profiles></settings>

在spring项目中, 用java.version来统一设置


maven的settings.xm和pom.xml也可以通过设定 maven-compiler-plugin 这个插件来指定jdk版本

<plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-compiler-plugin</artifactId>    <version>3.9.6</version>    <configuration>        <source>21</source>        <target>21</target>    </configuration></plugin>

在pom.xml中的位置

<project>  ...  <build>    ...    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>        <version>3.9.6</version>        <configuration>          <source>21</source>          <target>21</target>        </configuration>      </plugin>    </plugins>    ...  </build>  ...</project>

在settings.xml中的位置 , 好像用不了

<settings>  ...  <profiles>    <profile>      <id>profile-maven-compiler-plugin</id>      <activation>        <activeByDefault>true</activeByDefault>      </activation>      <build>        <plugins>          <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <version>3.9.6</version>            <configuration>              <source>17</source>              <target>17</target>            </configuration>          </plugin>        </plugins>      </build>    </profile>  </profiles>  ...</settings>

Maven 在 settings.xml 中指定jdk版本

settings.xml 中的属性写在 setting👉profiles👉profile👉properties中,位于第5层

方法一, 直接写死, 例如指定jdk21
<settings>    <profiles>        <profile>            <id>jdk-version-21</id>            <!-- id和activation都可以用于激活该profile, 定义id可以在activeProfiles的activeProfile里设置该id从而激活该id代表的profile, id和activation可以只保留一个,也可两个都使用.  -->            <activation>                <activeByDefault>true</activeByDefault> <!-- 该profile是否默认激活, 不激活的话, 下面的properties是否默认生效, 这里设为true就能激活该profile从而使属性生效. 下方又用<activeProfile>jdk-version-21</activeProfile>再次确保该profile激活 -->            </activation>            <!--要使properties起作用, properties所属的profile必须在激活状态  -->            <properties>                <maven.compiler.source>21</maven.compiler.source>                <maven.compiler.target>21</maven.compiler.target>  <!-- JRE System Liblary 的版本和这句相同  -->            </properties>        </profile>    </profiles>    <!--  activeProfiles里的activeProfile对应profiles里的profile的id; 是激活profile的方式之一; 在activeProfiles中激活的profile可以不要activation标签了-->    <!--  activeProfiles与profiles同级是第二级, profile是第三级, settings → activeProfiles → activeProfile  ,  activeProfile可以有多个-->    <activeProfiles>        <!-- 要激活的profile的id , 在这里激活了的profile里的activation就无效了,可以去掉,当然也可以保留-->        <activeProfile>jdk-version-21</activeProfile>  <!-- 要激活的profile的id . 这里和上面该id的profile中的 <activeByDefault>true</activeByDefault> 任一个都能激活该id代表的profile, 两处设置确保启用该profile-->    </activeProfiles></settings>

去掉注释

    <profiles>        <profile>            <id>jdk-version-21</id>            <activation>                <activeByDefault>true</activeByDefault> <!-- 该profile是否默认激活, 不激活的话, 下面的properties是否默认生效, 这里设为true就能激活该profile从而使属性生效. 下方又用<activeProfile>jdk-version-21</activeProfile>再次确保该profile激活 -->            </activation>            <properties>                <maven.compiler.source>21</maven.compiler.source>                <maven.compiler.target>21</maven.compiler.target>  <!-- JRE System Liblary 的版本和这句相同  -->            </properties>        </profile>    </profiles>    <activeProfiles>        <activeProfile>jdk-version-21</activeProfile>  <!-- 要激活的profile的id . 这里和上面该id的profile中的 <activeByDefault>true</activeByDefault> 任一个都能激活该id代表的profile, 两处设置确保启用该profile-->    </activeProfiles>

只用 <activeByDefault>true</activeByDefault> 激活, 可以不要 <id>jdk-version-21</id><activeProfile>jdk-version-21</activeProfile>

    <profiles>        <profile>            <activation>                <activeByDefault>true</activeByDefault>            </activation>            <properties>                <maven.compiler.source>21</maven.compiler.source>                <maven.compiler.target>21</maven.compiler.target>  <!-- JRE System Liblary 的版本和这句相同  -->            </properties>        </profile>    </profiles>

只用 <activeProfile>jdk-version-21</activeProfile> 激活 , 则可以不要

    <profiles>        <profile>            <id>jdk-version-21</id>            <properties>                <maven.compiler.source>21</maven.compiler.source>                <maven.compiler.target>21</maven.compiler.target>  <!-- JRE System Liblary 的版本和这句相同  -->            </properties>        </profile>    </profiles>    <activeProfiles>        <activeProfile>jdk-version-21</activeProfile>    </activeProfiles>
引用属性变量,只在一个地方修设值jdk版本
<settings>    <profiles>        <profile>            <id>set-jdk-version</id>            <!-- id和activation都可以用于激活该profile, 定义id可以在activeProfiles的activeProfile里设置该id从而激活该id代表的profile, id和activation可以只保留一个,也可两个都使用.  -->            <activation>                <activeByDefault>true</activeByDefault> <!-- 该profile是否默认激活, 不激活的话, 下面的properties是否默认生效, 这里设为true就能激活该profile从而使属性生效. 下方又用<activeProfile>jdk-version-21</activeProfile>再次确保该profile激活 -->            </activation>            <!--要使properties起作用, properties所属的profile必须在激活状态  -->            <properties>                <jdk-version>21</jdk-version> <!--自定义一个属性用来设置版本,之后可以用${该属性名引用},就不用多处修改了-->                <maven.compiler.source>${jdk-version}</maven.compiler.source>                <maven.compiler.target>${jdk-version}</maven.compiler.target>  <!-- JRE System Library 的版本和这句相同  -->            </properties>        </profile>    </profiles>    <!--  activeProfiles里的activeProfile对应profiles里的profile的id; 是激活profile的方式之一; 在activeProfiles中激活的profile可以不要activation标签了-->    <!--  activeProfiles与profiles同级是第二级, profile是第三级, settings → activeProfiles → activeProfile  ,  activeProfile可以有多个-->    <activeProfiles>        <!-- 要激活的profile的id , 在这里激活了的profile里的activation就无效了,可以去掉,当然也可以保留-->        <activeProfile>set-jdk-version</activeProfile>  <!-- 要激活的profile的id . 这里和上面该id的profile中的 <activeByDefault>true</activeByDefault> 任一个都能激活该id代表的profile, 两处设置确保启用该profile-->    </activeProfiles></settings>

一处设置,双重激活

    <profiles>        <profile>            <id>set-JdkVersion</id>            <activation>                <activeByDefault>true</activeByDefault> <!-- 该profile是否默认激活, 不激活的话, 下面的properties是否默认生效, 这里设为true就能激活该profile从而使属性生效. 下方又用<activeProfile>JdkVersion-21</activeProfile>再次确保该profile激活 -->            </activation>            <properties>                <JdkVersion>21</JdkVersion> <!--自定义一个属性用来设置版本,之后可以用${该属性名引用},就不用多处修改了-->                <maven.compiler.source>${JdkVersion}</maven.compiler.source>                <maven.compiler.target>${JdkVersion}</maven.compiler.target>  <!-- JRE System Library 的版本和这句相同  -->            </properties>        </profile>    </profiles>    <activeProfiles>        <activeProfile>set-JdkVersion</activeProfile>  <!-- 要激活的profile的id . 这里和上面该id的profile中的 <activeByDefault>true</activeByDefault> 任一个都能激活该id代表的profile, 两处设置确保启用该profile-->    </activeProfiles>

Maven 在 pom.xml 中指定jdk版本

在pom.xml中可以用设置属性或者设置插件两种方法来设置jdk版本

用设置属性的方式
<project>  <properties>    <maven.compiler.source>21</maven.compiler.source>    <maven.compiler.target>21</maven.compiler.target>  </properties></project>
    <maven.compiler.source>21</maven.compiler.source>    <maven.compiler.target>21</maven.compiler.target>
用设置插件的方式 , 设置插件的方式优先级高于设置属性
<project>  ...  <build>    ...    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>        <!-- <version>3.9.6</version> --> <!-- 可以不要version -->        <configuration>          <source>21</source>          <target>21</target>        </configuration>      </plugin>    </plugins>    ...  </build>  ...</project>
用设置插件的方式 , 设置插件的方式优先级高于设置属性
    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>        <!-- <version>3.9.6</version> --> <!-- 可以不要version -->        <configuration>          <source>21</source>          <target>21</target>        </configuration>      </plugin>    </plugins>

两种方法都用上, , 插件的优先级高于属性

  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <JdkVersionOfThisPom>17</JdkVersionOfThisPom>    <java.version>${JdkVersionOfThisPom}</java.version>    <maven.compiler.source>${JdkVersionOfThisPom}</maven.compiler.source>    <maven.compiler.target>${JdkVersionOfThisPom}</maven.compiler.target>    <maven.compiler.compilerVersion>${JdkVersionOfThisPom}</maven.compiler.compilerVersion>  </properties>  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId><!--        <version>3.9.6</version>-->        <configuration>          <source>${JdkVersionOfThisPom}</source>          <target>${JdkVersionOfThisPom}</target>          <compilerVersion>${JdkVersionOfThisPom}</compilerVersion>        </configuration>      </plugin>    </plugins>  </build>

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句