一个基本的项目的pom.xml文件,通常至少三部分。
第一部分,项目坐标,信息描述
<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文件的模型版本。
groupId :一般是公司名倒写.项目名
artifactid:项目名.模块名
packaging:项目打包的后缀,war, jar,zip等,默认是jar
version:artiface 模块的版本
url:描述(地址)
group id + artifact id +version :项目在仓库中的坐标
第二部分 引入jar包
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
以上意思是:将junit-4.0.0.jar引入到项目中。
dependency:引入资源jar包到本地仓库,可以添加多个,表示引入多个jar包
group id+artifact id+version:资源jar包在仓库中的坐标
scope:作用范围,test指该jar包仅在maven测试时使用,发布时会忽略这个包。需要发布的jar包可以忽略这一配置
scope 可以选择的值,如下:
1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去
2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit
3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径(具有不好移植性)
第三部分*构建项目*
<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
第一个插件是用来设置java版本为1.7,
第二个插件是用来设置编码为utf-8、