Maven 是一个项目管理和构建自动化工具
简单说明
mvn生命周期
validate:验证工程是否正确,所有需要的资源是否可用。
compile:编译项目的源代码。
test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
Package:把已编译的代码打包成可发布的格式,比如jar。
integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
verify:运行所有检查,验证包是否有效且达到质量标准。
install:把包安装在本地的repository中,可以被其他工程作为依赖来使用。
Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
clean:清除先前构建的artifacts(在maven中,把由项目生成的包都叫作artifact)。
site:为项目生成文档站点
默认目录结构
${basedir} 存放 pom.xml和所有的子目录
${basedir}/src/main/java 项目的 java源代码
${basedir}/src/main/resources 项目的资源,比如说 property文件
${basedir}/src/test/java 项目的测试类,比如说 JUnit代码
${basedir}/src/test/resources 测试使用的资源
一个 maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 的 classes 会放在 ${basedir}/target/classes 下面, JAR 文件会放在 ${basedir}/target 下面。
实战配置
单独下载的maven(非内置), http://maven.apache.org/download.html ,下载下来之后,解压,找个路径放进去, 把bin的位置设在环境变量里
新建环境变量MAVEN_HOME
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains) 默认按回车
C:\Program Files (x86)\apache-maven-3.0.5
将 %MAVEN_HOME%\bin 加到PATH中
还需要设置JAVA_HOME,不然会报错找不到
$ mvn -v
若配置正确则显示正确,可以配置eclipse使用外置maven版本
修改setting.xml文件设置仓库地址
C:\Program Files (x86)\apache-maven-3.0.5\conf
svn help:system,若是第一次运行会输出一些信息
maven将要花一些时间去把最新的工具包(Maven 把它叫作artifacts)下载到你的本地仓库。
$mvn archetype:generate -DgroupId=com.mycompany.helloworld -DartifactId=helloworld -Dpackage=com.mycompany.helloworld -Dversion=1.0-SNAPSHOT
其中参数说明
archetype可以理解成项目的模型
groupId:项目组织的逆向域名,比如Apache的项目可以org.apache开头
artfactId:表示groupId下单个项目的唯一标识
version:发布项目的版本,版本标识加上SNAPSHOT标记
packing:项目打包后的输出,默认为jar。指为war项目打包生成一个web项目。
groupId,artfactId,version标识项目的唯一性,packing可以缺省
然后输入参数
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):595 回车
Choose org.apache.maven.archetypes:maven-archetype-quickstart version: 6 回车
Confirm properties configuration:
xxxxx
回车
然后目录下生成了一个helloworld的项目目录
d:\workspace\helloworld>tree
D:.
└─src
├─main
│ └─java
│ └─com
│ └─mycompany
│ └─helloworld
└─test
└─java
└─com
└─mycompany
└─helloworld
运行mvn package进行编译+测试,又是下载一坨东西,package前,会先执行compile,再执行test,最后才是package打包
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.mycompany.helloworld.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ helloworld ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.367s
[INFO] Finished at: Wed May 06 17:42:02 CST 2015
[INFO] Final Memory: 7M/155M
[INFO] ------------------------------------------------------------------------
这时候tree下,可以看到生成了target目录
此时的jar包,还不能直接运行
在pom.xml下之前增加build属性
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath>
</classpath>
<argument>com.mycompany.helloworld.App</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
然后运行mvn exec:exec
d:\workspace\helloworld>mvn exec:exec
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building helloworld 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.2.1:exec (default-cli) @ helloworld ---
Hello World!
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.525s
[INFO] Finished at: Wed May 06 18:29:55 CST 2015
[INFO] Final Memory: 5M/123M
[INFO] ------------------------------------------------------------------------
一般使用到的命令
mvn package 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
mvn compile 编译
mvn test 编译并测试
mvn clean 清空生成的文件
mvn eclipse:eclipse 将项目转化为Eclipse项目
打开ecplise若遇到maven integration for eclipse jdk warning
设置Eclipse--Windows--Preferences--Java--Installed JREs将JRE home改成jdk目录:Add->Standard VM->Directory->选择jdk的目录
在ecplise目录下面修改eclipse.ini
-vm
C:\Program Files (x86)\Java\jdk1.7.0_75\bin
参考文档 http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html