pom文件详解
程序员文章站
2022-04-26 15:57:52
...
pom文件详解
父级常用POM
<!-- 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,
这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 -->
<modelVersion> 4.0.0 </modelVersion>
<!-- 项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app -->
<groupId>xxx</groupId>
<!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个特定的group ID下,artifact ID也必须是唯一的。通常和项目名称保持统一 -->
<artifactId>xxx</artifactId>
<!-- 项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,默认jar-->
<packaging> jar </packaging>
<!-- 项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
<version> 1.0-SNAPSHOT </version>
<!-- 发现依赖和扩展的远程仓库列表。下面的是阿里云的镜像仓库 -->
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<!-- 模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径 -->
<modules>
<!--子项目相对路径-->
<module></module>
</modules>
<!-- 以值替代名称,Properties可以在整个POM中使用-->
<properties>
<!-- 定义 java.version 1.8-->
<java.version>1.8</java.version>
<!-- 使用 ${java.version}-->
<maven.compiler.source>${java.version}</maven.compiler.source>
</properties>
<!-- profile可以让我们定义一系列的配置信息,然后指定其**条件,指定activeByDefault为true的时候就表示当没有指定其他profile为**状态时,该profile就默认会被** -->
<!--通常用profile来动态的选择配置文件,即多个部署环境 -->
<!-- 示例代码就展示了3种环境,本地开发环境,生产环境,测试环境,部署打包的时候制定不同的profile就可以 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<activeProfile>dev</activeProfile>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>pro</id>
<properties>
<activeProfile>pro</activeProfile>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<activeProfile>test</activeProfile>
</properties>
</profile>
</profiles>
<!-- 一般在最顶层的pom文件里,主要用来统一管理项目依赖的版本号,确保应用的各个项目的依赖和版本一致 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- 使用上文设置的properties -->
<version>${spring.boot.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 依赖具体的jar包 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- 如果不设置version,就会父级pom中dependencyManagement找,继承父级的 version 。如果设置了就用自己设置的版本-->
[<version>${spring.boot.version}</version>]
</dependency>
</dependencies>
<!-- 构建项目需要的信息,主要用于编译设置 -->
<build>
<!-- 使用的插件列表 -->
<plugins>
<!-- plugin元素包含描述插件所需要的信息 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>utf-8</encoding>
<compilerArgument>-XDignore.symbol.file</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
<resources>
<!-- 这个元素描述了项目相关或测试相关的所有资源路径 -->
<resource>
<!-- 描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。
举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为
org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 -->
<targetPath></targetPath>
<!-- 是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素
里列出。 -->
<filtering></filtering>
<!-- 描述存放资源的目录,该路径相对POM路径 -->
<directory></directory>
<!-- 包含的模式列表,例如**/*.xml. -->
<includes>
<include></include>
</includes>
<!-- 排除的模式列表,例如**/*.xml -->
<excludes>
<exclude></exclude>
</excludes>
</resource>
</resources>
下一篇: Mockito 单元测试