Maven Archetype开发(一)中已经介绍了如何开发Archetype模板项目,虽然Archetype模板项目能帮助我们快速生成一个新的骨架项目,但是要开发一个貌似也不太方便。尤其是我们每次要删除模板java目录的基础包目录以及在java文件中用Archetype变量替换基础包名。如果模板java少还行,一旦多了就容易犯错,最终导致生成的骨架项目无法使用。
幸运的是Maven Archetype插件已经为我们提供了一种更简洁的开发方式,下面我们就简单介绍下这种方式。
一、流程图
archetype-overview.png上面的流程图向我们展示了如何从一个普通项目转换成Archetype模板项目,然后再从该模板项目导出普通项目的过程。这里关注的重点就是
archetype:create-from-project
这个插件指令,它可以帮助我们将一个普通项目转换成Archetype模板项目。
二、archetype:create-from-project
如果没有其它要求,你完全可以在一个普通maven项目中输入以下指令,待执行完成后就可以在target
目录中找到已经生成的Archetype模板项目。
mvn archetype:create-from-project
另外该命令可以附带很多额外的参数,用来配置生成的Archetype模板项目,具体可以参考官方参数说明,这里我们主要说明propertyFile
这个参数。propertyFile
表示从文件中导入配置参数,其可用参数如下:
- package
基础包名,也就是需要删除的java基础包目录以及java文件中需要替换成变量的基础包名,比如com.jianshu.service,package=com.jianshu,那么com.jianshu.service会被替换成${package}.service,同时相应的包目录被删除 - archetype.languages
处理src/main/,src/test/中的包目录,比如archetype.languages=groovy,那么src/main/groovy下的包目录会被处理,而src/main/java下的包目录不会处理
可选:java, xml, txt, groovy, cs, mdo, aj, jsp, gsp, vm, html, xhtml, properties, .classpath, .project
- groupId
Archetype模板项目本身的groupId - artifactId
Archetype模板项目本身的artifactId - version
Archetype模板项目本身的version - excludePatterns
需要排除的文件或者目录 - archetype.filteredExtensions
需要进行属性变量替换的文件的后缀,比如archetype.filteredExtensions=java,那么java文件的包名会被属性变量替换
可选:java, groovy, csharp, aspectj
- Custom Properties
自定义属性变量
archetype.properties文件参考内容如下:
archetype.groupId=com.drw
archetype.artifactId=archetype-create-from-properties
archetype.version=1.0.0
package=com.drw.archetype
archetype.encoding=UTF-8
#archetype.filteredExtensions=java
#archetype.languages=java
excludePatterns=.vs/,target/,.settings/,.project,.classpath,.factorypath
#中文需要先转换成UNICODE码 ,否则会乱码
#des=测试
des=\u6d4b\u8bd5
使用命令如下:
mvn archetype:create-from-project -DpropertyFile=archetype.properties
网友评论