来自:http://gavin-chen.iteye.com/blog/336585
什么是重复的Maven项目初始配置?举个例来说,比如你公司要采用Maven + GWT的搭配,那些对于很多同事,尤其是新同事来说,搭配这样的平台是相当痛苦的事情,每当有不熟悉配置的人进入到项目组,都要消耗一个人很多时间去搭配!这时你可能会说,我搭配好,把整个项目备份,下次要用时,就拿出来用不就行了!在这里我要提醒你,你这样保存的目录是死的,就是说你里面那些文件夹,如/src/main/java/com/mycompany/,这里/com/mycompany就是死的,当项目groupId从com.mycompany改为org.apache时,你拷过来的东西,还得花比较多的时间去改。并且如果项目组有很多人,每个人都得先从一个地方拷贝,比较麻烦,从某种意义上来说,创建一个这个项目初始配置的archetype会节省你,尤其是项目组的时间,如果有自己的maven repository服务器,那效果就更佳了。
在这里我并不打算解释maven archetype是什么东西,大家有兴趣,可以参考官方文档,它有详尽的解释,与实例,这里我也只是简单列举一下用法,也并不打算写一篇官方文档的翻译版,纯粹是介绍之意
官方文档:http://maven.apache.org/guides/mini/guide-creating-archetypes.html
下面是创建自己的archetype的步骤,及用法
1、首先创建一个maven archetype的项目,用下面的命令
- mvn archetype:create
- -DgroupId=[your project's group id]
- -DartifactId=[your project's artifact id]
- -DarchetypeArtifactId=maven-archetype-archetype
mvn archetype:create -DgroupId=[your project's group id] -DartifactId=[your project's artifact id] -DarchetypeArtifactId=maven-archetype-archetype
在上面的命令中 -D 是参数, groupId 与 archetypeId的意义也不解释了,maven项目的话,groupId, archetypeId, version这三个是必须得了解的,即使你用别人的dependency,这三个参数也是必须明确的,这里再次提醒一下,maven的官方网站是:http://maven.apache.org
首先在命令行窗口中,进到你想要存放这个项目的目录,如c:\test,又比如你公司的网站有http://www.mycompany.com,那么通常你的groupId就是"com.mycompany",新创建的archetype项目想命名为my-archetype,那么,就该打以下命令
c:\test > mvn archetype:create -DgroupId=com.mycompany -DartifactId=my-archetype -DarchetypeArtifactId=maven-archetype-archetype
运行完命令后c:\test目录下会生成下面这样一个目录结构
my-archetype
|--pom.xml //这个是archetype项目的pom文件,下面还有一个pom文件,两个是不同的
|--src
|--main
|--resources
|--archetype-resources //这个文件夹里面的文件全是要被复制的文件
|--pom.xml //要被复制的pom.xml文件
|--src
|--main
|--java //实际上,在创建新项目后,会自己帮你创建与groupId相对应的文件夹,然后把源代码文件复制相这些文件夹下面
|--App.java //要被复制的java代码文件
|--test
|--java
|--TestApp.java //要被复制的单元测试代码文件
|--META-INF
|--maven
|--archetype.xml //在这个xml文件中,要明确写明所有要被复制的文件的相对路径
然后运行下面这个命令,将自己的archetype install 到本地的maven repository目录中
c:\test > mvn install
就这样,你自己的maven archetype就己经成功被安装了,怎么使用它,下面再作简单介绍
比如有一个新同事,要用你的archetype生成一新项目的初始配置目录,groupId与你之前所写的有所不同,为com.company.customer,artifactId为news-module,那么,他需要运行下面这个命令
c:\test > mvn archetype:create -DarchetypeGoupId=com.mycompany -DarchetypeArtifactId=my-archetype -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.mycompany.customer -DartifactId=news-module
不要怕命令长度太长,其实理解了它们的意思,就容易了,无非就是archetype、groupId、artifactId、version这几个单词的组合
在上面的命令中,-DarchetypeVersion=1.0-SNAPSHOT,这个1.0-SNAPSHOT是怎么来的呢,其实新创建的archetype项目version都是1.0-SNAPSHOT(你可以在c:\test\first-maven-archetype\pom.xml文件中找到,当然,如果你想换,你自己可以改一个你喜欢的)
运行完以上命令后,在你c:\test文件夹下,会生成下面这样一个目录
news-module
|--pom.xml //这个pom是复制过来的
|--src
|--main
|--java
|--com
|--mycompany //com,mycompany,customer这三个文件夹是根据groupId自动创建的
|--customer
|--App.java //这个文件是复制过来的
|--test
|--java
|--com
|--mycompany //com,mycompany,customer这三个文件夹是根据groupId自动创建的
|--customer
|--TestApp.java //这个文件是复制过来的