如何用Maven模板创建工程

主要使用的是archetype:generate插件。
主要应用场景:
创建一个模板项目。
比如说cxf的技术你想了解下,然后就可以在模板中找下有没有别人写好的关于cxf基本使用的工程。
如果就,直接把这个按这个模板创建工程,再基于模板进行修改。
比自己找jar包依赖,复制代码效率要高多了。

使用方法

有两种使用模式,交互式批量式
既然是模板,当然有个模板列表文件。
位于http://repo.maven.apache.org/maven2/archetype-catalog.xml

运行

1
2
mvn archetype:generate > archetypefile.txt
// 等几分种 然后按 CTRL + C 退出)

也可以列出可选的模板。

在archetypefile.txt中就有对应该模板的序号。

有了这个序号,可以在交互模式中选按这个序号创建。

1
mvn archetype:generate -DgroupId=com.xx.core -DartifactId=xxxx -Dversion=1.1.1 -DarchetypeCatalog=local

在这里就可以选要创建的模板序号。
(序号从archetypefile.txt中找出来)

可以通过,把http://repo.maven.apache.org/maven2/archetype-catalog.xml中的内容下载到{user_home}\.m2\下,然后指定archetypeCatalog为local来避免等待时间过长。

1
mvn archetype:generate -DgroupId=com.xx.core -DartifactId=xxxx -Dversion=1.0.1 -DarchetypeCatalog=local -DarchetypeGroupId=cn.stackbox.archetypes -DarchetypeArtifactId=rest-with-oauth2 -DarchetypeVersion=0.0.1 -DinteractiveMode=false

有时候会出出这个错误。

The desired archetype does not exist

解决办法
http://www.cnblogs.com/MOBIN/p/5147784.html

参数含义

  • -DgroupId——组织机构ID,com.xxx
  • -DarchefactID——项目ID,xxx-starter
  • -DpackageName——包名称,comxxx.
  • -Dversion——项目版本,0.0.1-snapshot
  • -DarchetypeGroupId——原型组织机构ID,org.apache.maven.archetypes
  • -DarchetypeArtifactId——原型项目ID,maven-archetype-quickstart
  • -DarchetypeVersion——原型项目版本,1.0
  • -DinteractiveMode——交互模式,false
  • -DarchetypeCatalog——原型查找策略,查找archetype-catalog.xml的位置
    • internal,maven-archetype-plugin内置的
    • local,{user_home}/.m2/archetype-catalog.xml
    • remote,指向maven中央仓库

如何从已有的工程创建archetype模板

  • 进入已有工程根目录,如root,运行mvn archetype:create-from-project
  • target生成generated-sources\archetype目录,这个目录下就是创建模板的工程
  • 进入该目录root\target\generated-sources\archetype,查看pom.xml文件
  • pom.xml中有groupId,artifactId,version,description,适情况修改
    * 运行mvn install,会把模板工程安装在本地
  • 可以在.m2\repository\目录下看到archetype-catalog.xml文件,在其中看到与上面pom文件一样的配置
  • 接下来创建工程,与上面的步骤类似,指定上面pom文件中的相关配置就行
  • 如果要部署到远程仓库,在pom文件中配置distributionManagement,再进行mvn deploy其它人就可以用了

关于archetype中其它文件的说明

  • generated-sources\archetype\src\main\resources\META-INF\maven\的archetype-metadata.xml文件,这里记录了文件的打包信息
  • generated-sources\archetype\src\test\resources\projects\basic\的archetype.properties文件,以键值对的形式定义一些变量,也可以自己加变量中去,这样引擎在生成文件中,会对标记的变量进行替换

参考