【Maven】Maven的pom.xml文件

              【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

https://blog.csdn.net/caomiao2006/article/details/40401517?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf

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版权协议,转载请附上原文出处链接和本声明。