Maven的settings.xml笔记231208

https://maven.apache.org/ref/

官方文档的模板
官方文档模板3.9.6版

https://maven.apache.org/ref/3.9.6/maven-settings/settings.html

The default location for the settings file is ~/.m2/settings.xml

    <settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
      <localRepository/>
      <interactiveMode/>
      <usePluginRegistry/>
      <offline/>
     
      <proxies>
        <proxy>
          <active/>
          <protocol/>
          <username/>
          <password/>
          <port/>
          <host/>
          <nonProxyHosts/>
          <id/>
        proxy>
      proxies>
     
      <servers>
        <server>
          <username/>
          <password/>
          <privateKey/>
          <passphrase/>
          <filePermissions/>
          <directoryPermissions/>
          <configuration/>
          <id/>
        server>
      servers>
     
      <mirrors>
        <mirror>
          <mirrorOf/>
          <name/>
          <url/>
          <layout/>
          <mirrorOfLayouts/>
          <blocked/>
          <id/>
        mirror>
      mirrors>
     
      <profiles>
        <profile>
          <activation>
            <activeByDefault/>
            <jdk/>
            <os>
              <name/>
              <family/>
              <arch/>
              <version/>
            os>
            <property>
              <name/>
              <value/>
            property>
            <file>
              <missing/>
              <exists/>
            file>
          activation>
          <properties>
            <key>valuekey>
          properties>
     
          <repositories>
            <repository>
              <releases>
                <enabled/>
                <updatePolicy/>
                <checksumPolicy/>
              releases>
              <snapshots>
                <enabled/>
                <updatePolicy/>
                <checksumPolicy/>
              snapshots>
              <id/>
              <name/>
              <url/>
              <layout/>
            repository>
          repositories>
          <pluginRepositories>
            <pluginRepository>
              <releases>
                <enabled/>
                <updatePolicy/>
                <checksumPolicy/>
              releases>
              <snapshots>
                <enabled/>
                <updatePolicy/>
                <checksumPolicy/>
              snapshots>
              <id/>
              <name/>
              <url/>
              <layout/>
            pluginRepository>
          pluginRepositories>
          <id/>
        profile>
      profiles>
     
      <activeProfiles/>
      <pluginGroups/>
    settings>
官方文档模板 3.6.0 版

https://maven.apache.org/ref/3.6.0/maven-settings/settings.html

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <localRepository/>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>
 
  <proxies>
    <proxy>
      <active/>
      <protocol/>
      <username/>
      <password/>
      <port/>
      <host/>
      <nonProxyHosts/>
      <id/>
    proxy>
  proxies>
 
  <servers>
    <server>
      <username/>
      <password/>
      <privateKey/>
      <passphrase/>
      <filePermissions/>
      <directoryPermissions/>
      <configuration/>
      <id/>
    server>
  servers>
 
  <mirrors>
    <mirror>
      <mirrorOf/>
      <name/>
      <url/>
      <layout/>
      <mirrorOfLayouts/>
      <id/>
    mirror>
  mirrors>
 
  <profiles>
    <profile>
      <activation>
        <activeByDefault/>
        <jdk/>
        <os>
          <name/>
          <family/>
          <arch/>
          <version/>
        os>
        <property>
          <name/>
          <value/>
        property>
        <file>
          <missing/>
          <exists/>
        file>
      activation>
      <properties>
        <key>valuekey>
      properties>
 
      <repositories>
        <repository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        repository>
      repositories>
      <pluginRepositories>
        <pluginRepository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        pluginRepository>
      pluginRepositories>
      <id/>
    profile>
  profiles>
 
  <activeProfiles/>
  <pluginGroups/>
settings>
官方文档模板 3.1.0 版

https://maven.apache.org/ref/3.1.0/maven-settings/settings.html

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <localRepository/>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>

  <proxies>
    <proxy>
      <active/>
      <protocol/>
      <username/>
      <password/>
      <port/>
      <host/>
      <nonProxyHosts/>
      <id/>
    proxy>
  proxies>

  <servers>
    <server>
      <username/>
      <password/>
      <privateKey/>
      <passphrase/>
      <filePermissions/>
      <directoryPermissions/>
      <configuration/>
      <id/>
    server>
  servers>

  <mirrors>
    <mirror>
      <mirrorOf/>
      <name/>
      <url/>
      <layout/>
      <mirrorOfLayouts/>
      <id/>
    mirror>
  mirrors>

  <profiles>
    <profile>
      <activation>
        <activeByDefault/>
        <jdk/>
        <os>
          <name/>
          <family/>
          <arch/>
          <version/>
        os>
        <property>
          <name/>
          <value/>
        property>
        <file>
          <missing/>
          <exists/>
        file>
      activation>
      <properties>
        <key>valuekey>
      properties>

      <repositories>
        <repository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        repository>
      repositories>
      <pluginRepositories>
        <pluginRepository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        pluginRepository>
      pluginRepositories>
      <id/>
    profile>
  profiles>

  <activeProfiles/>
  <pluginGroups/>
settings>
官方文档模板 3.0 版 , 2010年

https://maven.apache.org/ref/3.0/maven-settings/settings.html

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <localRepository/>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>
  <proxies>
    <proxy>
      <active/>
      <protocol/>
      <username/>
      <password/>
      <port/>
      <host/>
      <nonProxyHosts/>
      <id/>
    proxy>
  proxies>
  <servers>
    <server>
      <username/>
      <password/>
      <privateKey/>
      <passphrase/>
      <filePermissions/>
      <directoryPermissions/>
      <configuration/>
      <id/>
    server>
  servers>
  <mirrors>
    <mirror>
      <mirrorOf/>
      <name/>
      <url/>
      <layout/>
      <mirrorOfLayouts/>
      <id/>
    mirror>
  mirrors>
  <profiles>
    <profile>
      <activation>
        <activeByDefault/>
        <jdk/>
        <os>
          <name/>
          <family/>
          <arch/>
          <version/>
        os>
        <property>
          <name/>
          <value/>
        property>
        <file>
          <missing/>
          <exists/>
        file>
      activation>
      <properties>
        <key>valuekey>
      <properties/>
      <repositories>
        <repository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        repository>
      repositories>
      <pluginRepositories>
        <pluginRepository>
          <releases>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          releases>
          <snapshots>
            <enabled/>
            <updatePolicy/>
            <checksumPolicy/>
          snapshots>
          <id/>
          <name/>
          <url/>
          <layout/>
        pluginRepository>
      pluginRepositories>
      <id/>
    profile>
  profiles>
  <activeProfiles/>
  <pluginGroups/>
settings>

true是Maven profile中的一个元素,它表示如果没有任何其他的profile被显式激活,那么这个profile将会被默认激活。

在Maven中,你可以定义多个profile,每个profile可以包含一些特定的设置,例如仓库的位置、插件的版本、依赖的版本等等。这些设置可以在不同的环境中使用,例如在开发环境、测试环境和生产环境中使用不同的设置。当你运行Maven命令时,你可以通过一些方式来显式地激活一个或多个profile,例如通过命令行参数或者通过设置环境变量。

但是,如果没有任何profile被显式激活,Maven将会使用哪个profile呢?这时,元素就起作用了。如果你在profile中将设置为true,那么这个profile将会在没有任何其他profile被显式激活的情况下被默认激活。

需要注意的是,如果有多个profile都将设置为true,那么Maven将会使用第一个在settings.xml文件中定义的profile。因此,你需要确保你的settings.xml文件中定义的profile的顺序是有意义的。

总的来说,true的作用是在没有其他profile被显式激活的情况下,默认激活这个profile。这可以帮助你确保在没有指定任何特定设置的情况下,Maven仍然可以使用一些合理的默认设置来构建你的项目。

设置 Java Jdk 版本

maven.compiler.source

maven.compiler.source 是 Maven 中的一个属性,它用于指定编译器编译源代码的 Java 版本。

在 Maven 的 pom.xml 文件中,你可以通过在 标签中设置 maven.compiler.source 属性来指定编译器编译源代码的 Java 版本。例如,要将编译器源代码版本设置为 1.8,你可以在 pom.xml 文件中添加以下代码:

<properties>
  <maven.compiler.source>1.8maven.compiler.source>
properties>

这将告诉 Maven 使用 Java 1.8 版本的编译器来编译源代码。你可以根据需要将 maven.compiler.source 属性设置为其他 Java 版本。

请注意,maven.compiler.source 属性仅指定编译器编译源代码的 Java 版本。如果你还需要指定编译器生成目标字节码的 Java 版本,你应该使用 maven.compiler.target 属性。例如,要将编译器目标字节码版本设置为 1.8,你可以在 pom.xml 文件中添加以下代码:

<properties>
  <maven.compiler.target>1.8maven.compiler.target>
properties>

通过设置 maven.compiler.sourcemaven.compiler.target 属性,你可以确保 Maven 使用正确的 Java 版本进行编译,并生成符合目标环境的字节码。


maven.compiler.target

maven.compiler.target 是 Maven 中的一个属性,它用于指定编译器生成目标字节码的 Java 版本。

在 Maven 的 pom.xml 文件中,你可以通过在 标签中设置 maven.compiler.target 属性来指定编译器生成目标字节码的 Java 版本。例如,要将编译器目标字节码版本设置为 1.8,你可以在 pom.xml 文件中添加以下代码:

<properties>
  <maven.compiler.target>1.8maven.compiler.target>
properties>

这将告诉 Maven 使用 Java 1.8 版本的编译器生成目标字节码。你可以根据需要将 maven.compiler.target 属性设置为其他 Java 版本。

请注意,maven.compiler.target 属性仅指定编译器生成目标字节码的 Java 版本。如果你还需要指定编译器编译源代码的 Java 版本,你应该使用 maven.compiler.source 属性。例如,要将编译器源代码版本设置为 1.8,你可以在 pom.xml 文件中添加以下代码:

<properties>
  <maven.compiler.source>1.8maven.compiler.source>
  <maven.compiler.target>1.8maven.compiler.target>
properties>

通过设置 maven.compiler.sourcemaven.compiler.target 属性,你可以确保 Maven 使用正确的 Java 版本进行编译,并生成符合目标环境的字节码。


maven.compiler.compilerVersion

maven.compiler.compilerVersion 是 Maven 中的一个属性,它用于指定编译器编译源代码的版本。

在 Maven 的 pom.xml 文件中,你可以通过在 标签中设置 maven.compiler.compilerVersion 属性来指定编译器编译源代码的版本。例如,要将编译器版本设置为 1.8,你可以在 pom.xml 文件中添加以下代码:

<properties>
  <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>

这将告诉 Maven 使用 Java 1.8 版本的编译器来编译源代码。你可以根据需要将 maven.compiler.compilerVersion 属性设置为其他编译器版本。

请注意,maven.compiler.compilerVersion 属性并不是必需的。如果你没有设置该属性,Maven 将使用默认的编译器版本,这通常是系统上安装的默认 Java 版本。

另外,如果你已经设置了 maven.compiler.sourcemaven.compiler.target 属性来指定编译器编译源代码的 Java 版本和生成目标字节码的 Java 版本,那么这些属性将优先于 maven.compiler.compilerVersion 属性。这意味着如果你没有显式设置 maven.compiler.compilerVersion 属性,Maven 将使用与 maven.compiler.sourcemaven.compiler.target 属性指定的 Java 版本相对应的编译器版本。

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

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>21maven.compiler.source>
    <maven.compiler.target>21maven.compiler.target>
  properties>
project>

在settings.xml中的位置

<settings>
    <profiles>
        <profile>
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
            <properties>
                <maven.compiler.source>21maven.compiler.source>
                <maven.compiler.target>21maven.compiler.target>  
            properties>
        profile>
    profiles>
settings>

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


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

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

在pom.xml中的位置

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

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

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

Maven 在 settings.xml 中指定jdk版本

settings.xml 中的属性写在 settingprofilesprofileproperties中,位于第5层

方法一, 直接写死, 例如指定jdk21
<settings>
    <profiles>
        <profile>
            <id>jdk-version-21id>
            
            <activation>
                <activeByDefault>trueactiveByDefault> 
            activation>
            
            <properties>
                <maven.compiler.source>21maven.compiler.source>
                <maven.compiler.target>21maven.compiler.target>  
            properties>
        profile>
    profiles>
    
    
    <activeProfiles>
        
        <activeProfile>jdk-version-21activeProfile>  
    activeProfiles>
settings>

去掉注释


    <profiles>
        <profile>
            <id>jdk-version-21id>
            <activation>
                <activeByDefault>trueactiveByDefault> 
            activation>
            <properties>
                <maven.compiler.source>21maven.compiler.source>
                <maven.compiler.target>21maven.compiler.target>  
            properties>
        profile>
    profiles>
    <activeProfiles>
        <activeProfile>jdk-version-21activeProfile>  
    activeProfiles>

只用 true 激活, 可以不要 jdk-version-21jdk-version-21

    <profiles>
        <profile>
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
            <properties>
                <maven.compiler.source>21maven.compiler.source>
                <maven.compiler.target>21maven.compiler.target>  
            properties>
        profile>
    profiles>

只用 jdk-version-21 激活 , 则可以不要

    <profiles>
        <profile>
            <id>jdk-version-21id>
            <properties>
                <maven.compiler.source>21maven.compiler.source>
                <maven.compiler.target>21maven.compiler.target>  
            properties>
        profile>
    profiles>
    <activeProfiles>
        <activeProfile>jdk-version-21activeProfile>
    activeProfiles>
引用属性变量,只在一个地方修设值jdk版本
<settings>
    <profiles>
        <profile>
            <id>set-jdk-versionid>
            
            <activation>
                <activeByDefault>trueactiveByDefault> 
            activation>
            
            <properties>
                <jdk-version>21jdk-version> 
                <maven.compiler.source>${jdk-version}maven.compiler.source>
                <maven.compiler.target>${jdk-version}maven.compiler.target>  
            properties>
        profile>
    profiles>
    
    
    <activeProfiles>
        
        <activeProfile>set-jdk-versionactiveProfile>  
    activeProfiles>
settings>

一处设置,双重激活

    <profiles>
        <profile>
            <id>set-JdkVersionid>
            <activation>
                <activeByDefault>trueactiveByDefault> 
            activation>
            <properties>
                <JdkVersion>21JdkVersion> 
                <maven.compiler.source>${JdkVersion}maven.compiler.source>
                <maven.compiler.target>${JdkVersion}maven.compiler.target>  
            properties>
        profile>
    profiles>
    <activeProfiles>
        <activeProfile>set-JdkVersionactiveProfile>  
    activeProfiles>

Maven 在 pom.xml 中指定jdk版本

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

  • 用设置属性的方式
<project>
  <properties>
    <maven.compiler.source>21maven.compiler.source>
    <maven.compiler.target>21maven.compiler.target>
  properties>
project>
    <maven.compiler.source>21maven.compiler.source>
    <maven.compiler.target>21maven.compiler.target>
  • 用设置插件的方式 , 设置插件的方式优先级高于设置属性
<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.pluginsgroupId>
        <artifactId>maven-compiler-pluginartifactId>
         
        <configuration>
          <source>21source>
          <target>21target>
        configuration>
      plugin>
    plugins>
    ...
  build>
  ...
project>
  • 用设置插件的方式 , 设置插件的方式优先级高于设置属性
    <plugins>
      <plugin>
        <groupId>org.apache.maven.pluginsgroupId>
        <artifactId>maven-compiler-pluginartifactId>
         
        <configuration>
          <source>21source>
          <target>21target>
        configuration>
      plugin>
    plugins>

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

  <properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    <JdkVersionOfThisPom>17JdkVersionOfThisPom>
    <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.pluginsgroupId>
        <artifactId>maven-compiler-pluginartifactId>

        <configuration>
          <source>${JdkVersionOfThisPom}source>
          <target>${JdkVersionOfThisPom}target>
          <compilerVersion>${JdkVersionOfThisPom}compilerVersion>
        configuration>
      plugin>
    plugins>
  build>

你可能感兴趣的:(依赖管理,Maven,Gradle,等,maven,xml,笔记)