Maven使用POM文件管理项目资源,pom.xml文件位于项目根目录下,结构如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>hello-world</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>Maven Hello World Project</name> <description>Maven Hello World Project Demo</description> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> </dependencies> </project>
项目目录结构如下:
HelloWorld │ pom.xml │ └─src ├─main │ └─java │ └─com │ └─example │ └─helloworld │ HelloWorld.java └─test └─java └─com └─example └─helloworld HelloWorldTest.java
pom.xml文件说明:
打包类型:jar和war,默认使用jar类型打包。
POM文件中依赖的使用范围可以通过scope元素指定,有如下几种范围:
test: 若scope指定为test,则表示该依赖只对测试代码有效;
compile: 若不声明依赖范围,则默认就是compile,表示该依赖对主代码和测试代码都有效。
除了手动构造Maven项目骨架外,一般可以使用archetype快速生成通用项目框架:
mvn archetype:generate
以交互式命令行方式构建Maven项目,过程中需要选择archetype(默认为maven-archetype-quickstart)和输入groupId、artifactId和package名。最后确认信息后会在当前目录下生成一个以artifactId为名的工程目录,该工程与上面手动创建的工程在目录结构上基本一致。
Maven核心要素
maven生命周期与插件
当插件目标被绑定到不同的生命周期阶段的时候,其执行顺序由生命周期阶段的先后顺序决定。如果多个目标被绑定到同一个阶段,它们按照插件声明的先后顺序执行。
Maven常用命令:
mvn clean compile:
mvn clean test: 执行test之前会先执行compile
mvn clean package: 执行package前会先执行test
mvn clean install: 执行install之前会先执行package
查看插件信息
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddetail
mvn dependency:list 查看当前项目的已解析依赖
mvn dependency:tree 查看当前项目的依赖树,可以查看当前项目的传递性依赖
mvn dependency:analyze 帮助分析当前项目的依赖(由于analyze只会分析编译主代码和测试代码需要用到的依赖,一些执行测试和运行时需要的依赖它就发现不了。)