背景:
经常要搭建新项目架构,以前都是copy paste
很繁琐,久而久之,会磨灭人的心性
后来我自己写了template项目,使用批处理来创建新项目,以后有机会和大家分享下这个心得
但是自己感觉不高大上
后来看到了 Maven Archetype Plugin http://maven.apache.org/archetype/maven-archetype-plugin/
非常不错
坑
不过有些坑
这不,当我使用 Create an archetype from a multi-module project 的时候
http://maven.apache.org/archetype/maven-archetype-plugin/examples/create-multi-module-project.html
我的项目是这样的目录
feilong-platform. ├─.settings ├─feilong-daemon │ ├─.settings │ └─src │ ├─main │ │ ├─java │ │ └─resources │ └─test │ ├─java │ └─resources ├─feilong-frontend │ ├─.settings │ └─src │ ├─main │ │ ├─java │ │ └─resources │ └─test │ ├─java │ └─resources ├─feilong-mobile │ ├─.settings │ └─src │ ├─main │ │ ├─java │ │ └─resources │ └─test │ ├─java │ └─resources ├-feilong-repo │ ├─.settings │ └─src │ ├─main │ │ ├─java │ │ │ └─com │ │ │ └─feilongarchetype │ │ │ ├─dao │ │ │ ├─manager │ │ │ ├─model │ │ │ ├─util │ │ │ └─web │ │ │ ├─controller │ │ │ ├─filter │ │ │ ├─interceptor │ │ │ ├─servlet │ │ │ └─view │ │ └─resources │ └─test │ ├─java │ └─resources └─feilong-sitemanager ├─.settings └─src ├─main │ ├─java │ └─resources └─test ├─java └─resources
父项目的名字是 feilong-platform
下面有四个子modoule
<modules>
<module>feilong-repo</module>
<module>feilong-frontend</module>
<module>feilong-sitemanager</module>
<module>feilong-daemon</module>
<module>feilong-mobile</module>
</modules>
运行
mvn -DdefaultEncoding=utf-8 -Darchetype.filteredExtensions=java archetype:create-from-project
创建出来的骨架是这样的
按照官方文档说明, 里面的目录应该变成 可变参数 "__rootArtifactId__"
但是我试过无数遍,死活还是老样子
查遍了官方文档,无迹;
查阅了,stackoverflow,无果;
解决方案:
好吧,古人云:"源码面前,了无秘密~"
直接看 maven-archetype-plugin 源码
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </build>
跟踪代码下来,发现
org.apache.maven.archetype.creator.FilesetArchetypeCreator 495 line
for ( Iterator<String> modules = pom.getModules().iterator(); modules.hasNext(); ) { String subModuleId = modules.next(); String subModuleIdDirectory = subModuleId; if ( subModuleId.indexOf( rootArtifactId ) >= 0 ) { subModuleIdDirectory = StringUtils.replace( subModuleId, rootArtifactId, "__rootArtifactId__" ); } createModulePoms( pomReversedProperties, rootArtifactId, packageName, FileUtils.resolveFile( basedir, subModuleId ), FileUtils.resolveFile( archetypeFilesDirectory, subModuleIdDirectory ), preserveCData, keepParent ); }
好嘛, 原来,子module 的名字不能随便取的, 需要有父module 的前缀
比如 父module rootArtifactId 叫 feilong-platform,那么 子module repo 需要叫 feilong-platform-repo
不能叫 feilong-repo
发现了这个新大陆之后,很开心,重新修改项目结构
feilong-platform ├─.settings ├─feilong-platform-daemon │ ├─.settings │ ├─src │ │ ├─main │ │ │ ├─java │ │ │ └─resources │ │ └─test │ │ ├─java │ │ └─resources │ └─target │ ├─classes │ └─test-classes ├─feilong-platform-frontend │ ├─.settings │ ├─src │ │ ├─main │ │ │ ├─java │ │ │ └─resources │ │ └─test │ │ ├─java │ │ └─resources │ └─target │ ├─classes │ └─test-classes ├─feilong-platform-mobile │ ├─.settings │ ├─src │ │ ├─main │ │ │ ├─java │ │ │ └─resources │ │ └─test │ │ ├─java │ │ └─resources │ └─target │ ├─classes │ └─test-classes ├─feilong-platform-repo │ ├─.settings │ ├─src │ │ ├─main │ │ │ ├─java │ │ │ │ └─com │ │ │ │ └─feilongarchetype │ │ │ │ ├─dao │ │ │ │ ├─manager │ │ │ │ ├─model │ │ │ │ ├─util │ │ │ │ └─web │ │ │ │ ├─controller │ │ │ │ ├─filter │ │ │ │ ├─interceptor │ │ │ │ ├─servlet │ │ │ │ └─view │ │ │ └─resources │ │ └─test │ │ ├─java │ │ └─resources │ └─target │ ├─classes │ └─test-classes └─feilong-platform-sitemanager ├─.settings ├─src │ ├─main │ │ ├─java │ │ └─resources │ └─test │ ├─java │ └─resources └─target ├─classes └─test-classes
再次执行
mvn -DdefaultEncoding=utf-8 -Darchetype.filteredExtensions=java archetype:create-from-project
结果
bingo,成功了
参考:
相关推荐
NULL 博文链接:https://feitianbenyue.iteye.com/blog/1828929
一个web网页游戏,用HTML写的,css样式、JavaScript也在里面,会动,有特效,学习前端的朋友可以试着下载来看看,有些地方是可以借鉴的,挺不错的
火箭兔奔月HTML5游戏源码,运行需要服务器环境,已经反复测试,放心使用。
jfreechart-1.0.14-javadocs chm格式 因为带有目录索引,所以打成rar 包上传 希望大家喜欢 --create by 飞天奔月
插件描述:纯HTML5兔子奔月吃月饼游戏,可分享到朋友圈. 参考示例:http://www.jq22.com/jquery-info6154
鲁迅《奔月》作品分析.pdf
小游戏源码-火贱兔奔月.rar
奔月生物:2021年半年度报告.PDF
HTML5兔子奔月吃月饼游戏源码
长娥奔月模板下载TIF
析鲁迅《奔月》.docx
初中语文文摘生活且看嫦娥咋奔月
HTML5兔子奔月吃月饼游戏源码.zip
[鲁迅]析鲁迅《奔月》.docx
奔月生物:2021年半年度报告.rar
Photoshop合成奔月女孩梦幻艺术照片效果
奔月生物:2019年半年度报告.PDF
专题嫦娥二号成功发射开创奔月新纪元
HTML5实现兔子中秋奔月吃月饼游戏源码.zip