Maven 配置
大约 3 分钟
介绍 maven settings.xml 和 pom.xml 配置文件的使用。
Maven 配置有两种:
settings.xml
settings.xml 是用来设置 maven 参数的配置文件。 settings.xml 中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。
pom.xml
settings.xml 是 maven 的全局配置文件,而 pom.xml 文件是所在项目的局部配置。
配置文件位置
pom.xml 文件一般位于项目根目录。
settings.xml 文件一般存在于两个位置:
- 全局配置:
${M2_HOME}/conf/settings.xml
- 用户配置:
~/.m2/settings.xml
配置优先级
核心: 局部配置优先于全局配置。
配置优先级从高到低: pom.xml > user settings > global settings
相关信息
如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。
mvn -X # 查看 settings.xml 文件的读取顺序
mvn help:effective-settings # 查看当前生效的 settings.xml
pom.xml 元素详解
资源(resource)
<!-- 构建项目需要的信息 -->
<build>
<!-- 该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对
于pom.xml的相对路径。 -->
<sourceDirectory></sourceDirectory>
<!-- 该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。
该路径是相对于pom.xml的相对路径。 -->
<testSourceDirectory></testSourceDirectory>
<!-- 被编译过的应用程序class文件存放的目录。 -->
<outputDirectory></outputDirectory>
<!-- 被编译过的测试class文件存放的目录。 -->
<testOutputDirectory></testOutputDirectory>
<!-- 这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在
最终的打包文件里。 -->
<resources>
<!-- 这个元素描述了项目相关或测试相关的所有资源路径 -->
<resource>
<!-- 描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。
举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为
org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 -->
<targetPath></targetPath>
<!-- 是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素
里列出。 -->
<filtering>false</filtering>
<!-- 描述存放资源的目录,该路径相对POM路径 -->
<directory>src/main/java</directory>
<!-- 包含的模式列表,例如**/*.xml. -->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yaml</include>
</includes>
<!-- 排除的模式列表,例如**/*.xml -->
<excludes>
<exclude></exclude>
</excludes>
</resource>
</resources>
</build>
插件(plugin)
<!-- 构建项目需要的信息 -->
<build>
<!-- 子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本
地配置都会覆盖这里的配置 -->
<pluginManagement>
<!-- 使用的插件列表 。 -->
<plugins>
<!-- plugin元素包含描述插件所需要的信息。 -->
<plugin>
<!-- 插件在仓库里的group ID -->
<groupId></groupId>
<!-- 插件在仓库里的artifact ID -->
<artifactId></artifactId>
<!-- 被使用的插件的版本(或版本范围) -->
<version></version>
<!-- 在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 -->
<executions>
<!-- execution元素包含了插件执行需要的信息 -->
<execution>
<!-- 执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标 -->
<id></id>
<!-- 绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 -->
<phase></phase>
<!-- 配置的执行目标 -->
<goals></goals>
<!-- 作为DOM对象的配置 -->
<configuration></configuration>
</execution>
</executions>
<!-- 作为DOM对象的配置 -->
<configuration></configuration>
</plugin>
</plugins>
</pluginManagement>
<!-- 该项目使用的插件列表 。 -->
<plugins>
<!-- plugin元素包含描述插件所需要的信息。 -->
<plugin>
<!-- 插件在仓库里的group ID -->
<groupId></groupId>
<!-- 插件在仓库里的artifact ID -->
<artifactId></artifactId>
<!-- 被使用的插件的版本(或版本范围) -->
<version></version>
<!-- 作为DOM对象的配置 -->
<configuration></configuration>
</plugin>
</plugins>
</build>
参考:
- todo https://www.cnblogs.com/jingmoxukong/p/6050172.html?utm_source=gold_browser_extension
- todo https://blog.csdn.net/weixin_42201180/article/details/127121085