i. 在编译、打包或安装之前,确保工程没有编译错误,依赖包也可用。
ii. 在父项目上运行编译、打包或安装命令,将会根据依赖关系依次打包所有的子项目;如果仅仅是编译、打包或安装某个子项目,确保依赖的包已经打好或者在本地(远程)仓库中存在。
1. 清理
mvn clean
使用的插件是:maven-clean-plugin
2. 编译
mvn compile
使用的插件是:
maven-resources-plugin (处理资源文件)
maven-compiler-plugin (编译源代码)
配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>
以上配置放在主pom.xml中,为整个工程定义资源和编译环境。
3. 测试
mvn test -Dtest=***Test
其中,***Test为被测试用例类的全限定名。
使用的插件是(包括编译用到的插件):
maven-surefire-plugin
4. 打包
在工程根目录下生成target文件夹,文件夹内存放jar (war)包,class文件以及资源等内容
mvn package
使用的插件是(包括测试用到的插件):
maven-javadoc-plugin (文档包)
maven-jar-plugin (jar包)
maven-war-plugin (war包)
5. 安装
先打包,然后在本地repo仓库中生成工程jar (war)包目录。
a. 命令行方式:
mvn install
使用的插件(包括打包用到的插件):
maven-install-plugin
b. 界面方式:
在IDE(Eclipse)的工程上右键[Run As],第一次运行时选择[Maven build...],以后直接选择[Maven build],maven将使用上一次的配置运行:
![](http://dl2.iteye.com/upload/attachment/0089/2827/bb1860d1-d6df-35ca-a407-ddca306cf6d2.png)
在弹出的对话框的Goals框中输入需要执行的maven的命令,如clean install等,Profiles框输入settings.xml或pom.xml中指定的配置名,如dev, prod等,然后指定一些参数,Debug Output表示输出调试信息,Skip Tests表示跳过测试步骤,点击[Run]就开始安装了:
![](http://dl2.iteye.com/upload/attachment/0089/2829/9a904d5a-2b9a-3e89-92db-74135d3cde08.png)
6. 部署
先安装,然后上传jar (war)包到远程repo仓库:
mvn deploy
使用的插件 (包括安装用到的插件):
maven-deploy-plugin
跳过编译、打包或部署过程中的测试步骤:
加上参数:
-Dmaven.test.skip=true
或者
-DskipTests
7. 运行程序
运行系统本地程序。
mvn exec:exec -Dexec.executable="notepad.exe" -Dexec.args="pom.xml"
使用的插件: exec-maven-plugin
也可以用exec目标来运行java
mvn exec:exec -Dexec.executable="java" -Dexec.args="-Dproperty1=value1 -XX:PermSize=256m -classpath %classpath% com.john.app.Mosaic arg1 arg2"
除了exec目标之外,exec-maven-plugin还提供了一个java目标,该目标要求你提供一个mainClass参数,然后它使用当前项目的依赖作为classpath,在同一个JVM中运行该mainClass:
mvn exec:java -Dexec.mainClass=com.john.app.Mosaic -Dexec.args="arg1 arg2" -Dexec.classpathScope=runtime