学过Maven的人,都知道用MyEclipse的Maven插件生成一个项目骨架,比如maven-archetype-quickstart,这个原型就是最常用的之一。
刚开始使用骨架的时候,感觉很好,减少了重复劳动,提高了开发效率。使用的时间久了,就会发现,Maven Archetype提供的项目骨架不能百分百的满足公司规定的项目结构,不免要手动改些东西。
此时,自然而然的就会想到:如果能将公司(或项目组)规定的项目结构作为一个骨架原型上传个私服,作为模版供项目使用,就无须修改任何的文件。也减少了项目环境搭建时间、降低了出错率等。
实际应用中,项目组(或者部门/公司)会有自己的私服,因此以下的介绍前提条件是配有自己的私服。
第一步:选择模版项目,生成原型。
选择生成Archetype的模板项目,运行命令:mvn clean archetype:create-from-project
命令参数可参考
但实际应用中,模板项目选好后,一般无须指定任何参数。
此时项目的Archetype已经生成,位于${basedir}/target/generated-sources/archetype/目录下。
第二步:将Archetype上传到私服,共享给其他人使用(需要有deploy权限和scm配置)。
到${basedir}/target/generated-sources/archetype/目录下执行命令:mvn deploy
将该原型上传到私服,此时前期工作完成,以后可以使用该原型生成项目骨架。
第三步:使用Archetype生成项目骨架。
任意目录下,执行命令:
mvn archetype:generate
-DinteractiveMode=false
-DarchetypeCatalog=internal,remote
-DarchetypeRepository=
-DarchetypeGroupId=com.ktr
-DarchetypeArtifactId=java-project-template-archetype
-DarchetypeVersion=1.1-SNAPSHOT
-DgroupId=com.ktr
-DartifactId=ktr-t
-Dversion=0.1-SNAPSHOT
-Dgoals=compile
(命令应该在一行,为了方便查看,故分开多行)
命令参数的详细说明:
interactiveMode:交互模式,默认为true,在交互模式下运行命令,要求用户指定选用的原型,以及生成项目模版的groupId、artifactId、version、package等属性,否则执行失败;
archetypeCatalog:Archetype查找规则;
archetypeRepository:仓库URL地址;不指定,则默认从中央库查找;
archetypeGroupId:原型的groupId;默认值为org.apache.maven.archetypes;
archetypeArtifactId:原型的artifactId;默认值为maven-archetype-quickstart;
archetypeVersion:原型的version;默认值为1.0;
如果interactiveMode属性设置为false(或使用Maven参数-B),则为批处理模式。此时需要指定如下参数
groupId:生成项目的groupId;必选;
artifactId:生成项目的artifactId;必选;
version:生成项目的version;默认值1.0-SNAPSHOT;
package:生成项目的源码包结构;默认值使用${groupId};
basedir:项目生成的目录;默认值为当前目录;
此时,第三步的命令可简化为:
mvn archetype:generate
-DinteractiveMode=false
-DarchetypeGroupId=com.ktr
-DarchetypeArtifactId=java-project-template-archetype
-DarchetypeVersion=1.1-SNAPSHOT
-DgroupId=com.ktr
-DartifactId=ktr-t
补充说明:
通过MyEclipse的Maven插件生成项目骨架时,其直接连接中央库,无法连接私服,因此不能使用自定义的项目原型,而应该使用Maven命令行来生成项目骨架。