约定配置:
目录 | 目的 |
---|---|
${basedir} | 存放pom.xml和所有的子目录 |
${basedir}/src/main/java | 项目的java源代码 |
${basedir}/src/main/resources | 项目的资源,比如说property文件,springmvc.xml |
${basedir}/src/test/java | 项目的测试类,比如说Junit代码 |
${basedir}/src/test/resources | 测试用的资源 |
${basedir}/src/main/webapp/WEB-INF | web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面 |
${basedir}/target | 打包输出目录 |
${basedir}/target/classes | 编译输出目录 |
${basedir}/target/test-classes | 测试编译输出目录 |
Test.java | Maven只会自动运行符合该命名规则的测试类 |
~/.m2/repository | Maven默认的本地仓库目录位置 |
POM文件
POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构件,声明项目依赖,等等。
maven中构件坐标是通过一些元素定义的,他们是groupId、artifactId、version、packaging
groupId、artifactId、version是必须要定义的,package可以省略,默认为jar。
maven中定义的3套生命周期:
maven插件主要是为maven中生命周期中的阶段服务的,maven中只是定义了3套生命周期,以及每套生命周期中有哪些阶段,具体每个阶段中执行什么操作,完全是交给插件去干的。
maven中的插件以jar的方式存在于仓库中,和其他构件是一样的,也是通过坐标进行访问,每个插件中可能为了代码可以重用,一个插件可能包含了多个功能,比如编译代码的插件,可以编译源代码、也可以编译测试代码;插件中的每个功能就叫做插件的目标(Plugin Goal),每个插件中可能包含一个或者多个插件目标(Plugin Goal)。
目标参数
插件目标是用来执行任务的,那么执行任务肯定是有参数配的,这些就是目标的参数,每个插件目标对应于java中的一个类,参数就对应于这个类中的属性。
列出插件所有目标
- mvn 插件goupId:插件artifactId[:插件version]:help
- mvn 插件前缀:help
mvn org.apache.maven.plugins:maven-clean-plugin:help
mvn clean:help
查看插件目标参数列表
- mvn 插件goupId:插件artifactId[:插件version]:help -Dgoal=目标名称 -Ddetail
- mvn 插件前缀:help -Dgoal=目标名称 -Ddetail
mvn org.apache.maven.plugins:maven-clean-plugin:help -Dgoal=help -Ddetail
mvn clean: help -Dgoal=help -Ddetail
命令行运行插件
- mvn 插件goupId:插件artifactId[:插件version]:插件目标 [-D目标参数1] [-D目标参数2] [-D目标参数n]
- mvn 插件前缀:插件目标 [-D目标参数1] [-D目标参数2] [-D目标参数n]
mvn org.apache.maven.plugins:maven-surefire-plugin:help
mvn org.apache.maven.plugins:maven-surefire-plugin:test -Dmaven.test.skip=true
clean生命周期阶段与插件绑定关系
生命周期阶段 | 插件:目标 |
---|---|
pre-clean | |
clean | maven-clean-plugin:clean |
post-clean |
default生命周期阶段与插件绑定关系
default生命周期中有23个阶段,我只列出有默认绑定的,其他的没有列出的没有绑定任何插件,因此没有任何实际的行为。
生命周期阶段 | 插件:目标 | 执行任务 |
---|---|---|
process-resources | maven-resources-plugin:resources | 复制主资源文件至主输出目录 |
compile | maven-compiler-plugin:compile | 编译主代码至主输出目录 |
process-test-resources | maven-resources-plugin:testResources | 复制测试资源文件至测试输出目录 |
test-compile | maven-compiler-plugin:testCompile | 编译测试代码至测试输出目录 |
test | maven-surefile-plugin:test | 执行测试用例 |
package | maven-jar-plugin:jar | 创建项目jar包 |
install | maven-install-plugin:install | 将输出构件安装到本地仓库 |
deploy | maven-deploy-plugin:deploy | 将输出的构件部署到远程仓库 |
生命周期阶段 | 插件:目标 |
---|---|
pre-site | |
site | maven-site-plugin:site |
post-site | |
site-deploy | maven-site-plugin:deploy |
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-source-pluginartifactId>
- <version>3.2.0version>
- <executions>
-
- <execution>
-
- <id>attach-sourceid>
-
- <goals>
- <goal>jar-no-forkgoal>
- goals>
-
- <phase>verifyphase>
- execution>
- executions>
- plugin>
- plugins>
- build>
mvn help:effective-pom