【Maven】Maven的pom.xml文件
1 基本maven项目的pom.xml配置
一个基本项目的pom.xml文件,通常至少有以下三个部分。
1.1 第一部分,项目坐标,信息描述等
<modelVersion>4.0.0</modelVersion>
<groupId>com.company.project</groupId>
<artifactId>module</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>test Maven Webapp</name>
<url>http://maven.apache.org</url>- modelVersion:pom文件的模型版本
关于group id和artifact id,为了便于多人多模块协同开发管理(以后会讲),建议使用以下命名规范:
- group id:com.公司名.项目名
- artifact id:功能模块名
- packaging:项目打包的后缀,war是web项目发布用的,默认为jar
- version: artifact模块的版本
- name和url:相当于项目描述,可删除
- group id + artifact id +version :项目在仓库中的坐标
1.2 第二部分,引入jar包
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>这是创建项目时自动生成的,将junit-3.8.1.jar引入到项目中。
- dependency:引入资源jar包到本地仓库,要引入更多资源就在<dependencies>中继续增加<dependency>
- group id+artifact id+version:资源jar包在仓库中的坐标
- scope:作用范围,test指该jar包仅在maven测试时使用,发布时会忽略这个包。需要发布的jar包可以忽略这一配置
刚开始本地仓库是空的,maven会从远程仓库自动下载这个jar到本地仓库,下载完后,就可以在项目中使用这个jar了。
1.3 第三部分,构建项目
<build>
<finalName>helloworld</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>- build:项目构建时的配置
- finalName:在浏览器中的访问路径,如果将它改成helloworld,再执行maven--update,这时运行项目的访问路径是 http://localhost:8080/helloworld/ 而不是项目名的 http://localhost:8080/test
- plugins:插件,之前篇章已经说过,第一个插件是用来设置java版本为1.7,第二个插件是我刚加的,用来设置编码为utf-8
- group id+artifact id+version:插件在仓库中的坐标
- configuration:设置插件的参数值
2 其余知识点
2.1 Maven pom中packaging标签
https://blog.csdn.net/weixin_40763897/article/details/105405106
2.2 Maven pom中mirror和repository区别
https://blog.csdn.net/jeikerxiao/article/details/60324713
2.3 Maven pom中标签<plugins>和<pluginmanagement>的区别
stackoverflow中讲的不错
http://stackoverflow.com/questions/10483180/maven-what-is-pluginmanagement
pluginmanagement标签一般用在父pom中,子元素可以包含plugins插件,比如
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>然后,在子pom文件中就可以这样使用:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
</plugins>省去了版本、配置等信息,只需指定groupId和artifactId即可。
但是在父pom中,如果使用这个标签来包裹plugins插件,当在此项目根目录运行对应的mvn命令时,如果在子pom中没有直接像上面再次引用这个plugin,那么不会触发这个plugin插件,只有在子pom中再次引用了之后,才会在对应的子项目路径下触发这个plugin.
plugins和pluginManagement标签都需要在build标签中。
版权声明:本文为qq_27022241原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。