Maven是一种project management工具。大致上来说,可以认为它是没有图形界面的IDE。你可以用它来编译,打包,做成jar,war,ear.....
下载安装之后,可以通过命令创建一个简单的java项目
mvn archetype:create -DgroupId=com.sky -DartifactId=birds -DpackageName=com.sky.birds
这里,archetype是maven的一个plugin,而create是这个plugin的一个goal
Maven一个麻烦的地方就是它有自己的目录layout,大致是这样的:
birds/pom.xml
/src/
/src/main/
/main/java/
/java/com/sky/birds
/src/test/
/test/java/
上面的命令会在com.sky.birds下面生成一个App.java,里面就是一个简单的hello world程序
有了这个基本的框架之后,可以用
mvn install
来编译,并且打包成一个jar
这里install是maven的一个lifecycle phase。maven的lifecycle phase包括process-resources, compile, process-classes, process-test-resources,
test-compile, test, prepare-package, package......
在maven的默认设置中,每个phase都附加了相应的plugin goal。而执行一个phase,意味着同时执行所有在它之前的phases
比方说,process-resources这个lifecycle phase,它对应的plugin goal是resources:resources;test,对应着 surefire:test;package,对应 jar:jar
当你执行 mvn install的时候,换成plugin就是
mvn resources:resources \
compiler:compile \
resources:testResources \
compiler:testCompile \
surefire:test \
jar:jar
编译好了应该可以运行那个hello world了,是这样的:
mvn exec:java -Dexec.mainClass=com.sky.birds.App
要加参数?用 -Dexec.args=xxxx
项目建起来了,但真正写代码还是在eclipse里。把它import到eclipse里?杯具发生了:eclipse不认为那是一个java项目......
有个命令可以解决这个问题
mvn eclipse:eclipse
然后就可以把它作为一个existing project,import到eclipse里了
顺便说一下,建一个web项目类似于
mvn archetype:create -DgroupId=com.mycompany.app \
-DartifactId=my-webapp \
-DarchetypeArtifactId=maven-archetype-webapp