学过Maven的人,都知道用MyEclipse的Maven插件生成一个项目骨架,好比maven-archetype-quickstart,这个原型就是最经常使用的之一。java
刚开始使用骨架的时候,感受很好,减小了重复劳动,提升了开发效率。使用的时间久了,就会发现,Maven Archetype提供的项目骨架不能百分百的知足公司规定的项目结构,难免要手动改些东西。apache
此时,天然而然的就会想到:若是能将公司(或项目组)规定的项目结构做为一个骨架原型上传个私服,做为模版供项目使用,就无须修改任何的文件。也减小了项目环境搭建时间、下降了出错率等。maven
实际应用中,项目组(或者部门/公司)会有本身的私服,所以如下的介绍前提条件是配有本身的私服。ui
第一步:选择模版项目,生成原型。spa
选择生成Archetype的模板项目,运行命令:mvn clean archetype:create-from-project插件
命令参数可参考命令行
但实际应用中,模板项目选好后,通常无须指定任何参数。orm
此时项目的Archetype已经生成,位于${basedir}/target/generated-sources/archetype/目录下。ip
第二步:将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命令行来生成项目骨架。