坦白来讲,如果我看到有人还在热心于ssm是如何集成的,我觉得他一定是年纪不小了。那为啥我还要干这件事情呢?主要是想实践下maven的archetype如何制造。本以为应该很简单,但是国内的博客不给力,写的不清晰而且maven的文档实在伤人。所以折腾出来了就想出来说两句,让后来者能够省点心力。
成品请见github,欢迎star,水平有限,见笑。
maven的archetype是啥呢?就是按照一个模板来生成项目,啪一下就能够弄出一个目录结构和配置文件。阅读各种文章过程中,发觉archetype是基于velocity实现的。也就是说,使用archetype来创建项目的过程实际上就是一个复制文件夹,复制目录,替换文件中的变量(就是velocity的变量${var}形式的)。这样想来,archetype并没有什么神奇的。一项技术你感觉神奇的时候,最容易用上它,当你再感觉不神奇了,就是开始明白它了。
来说说具体做法,我没有用mvn archetype:create-from-project
主要是尝试了几遍都失败了,而且不知道怎么下手。索性手动来了。
大致步骤:
1. mvn archetype:generate -DarchetypeCatalog=internal
选择 maven-archetype-archetype
创建一个archetype项目
2. 将需要生成的文件和代码放置到src\main\resources\archetype-resources
下
3. 在src\main\resources\META-INF\maven
下增加一个archetype-metadata.xml
删除archetype.xml
。根据你的实际情况修改archetype-metadata.xml
4. 修改各种变量,以适应生成的需要
5. 其他配置
6. 测试
下面来详解
生成archetype项目
见以下内容,GAV请自定义
mvn archetype:generate -DarchetypeCatalog=internal
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ————————————————————————
[INFO]
[INFO] >>> maven-archetype-plugin:2.4:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.4:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO] — maven-archetype-plugin:2.4:generate (default-cli) @ standalone-pom —
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: internal -> org.apache.maven.archetypes:maven-archetype-archetype (An archetype which contains a sample archetype.)
2: internal -> org.apache.maven.archetypes:maven-archetype-j2ee-simple (An archetype which contains a simplifed sample J2EE application.)
3: internal -> org.apache.maven.archetypes:maven-archetype-plugin (An archetype which contains a sample Maven plugin.)
4: internal -> org.apache.maven.archetypes:maven-archetype-plugin-site (An archetype which contains a sample Maven plugin site.
This archetype can be layered upon an existing Maven plugin project.)
5: internal -> org.apache.maven.archetypes:maven-archetype-portlet (An archetype which contains a sample JSR-268 Portlet.)
6: internal -> org.apache.maven.archetypes:maven-archetype-profiles ()
7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
8: internal -> org.apache.maven.archetypes:maven-archetype-site (An archetype which contains a sample Maven site which demonstrates
some of the supported document types like APT, XDoc, and FML and demonstrates how
to i18n your site. This archetype can be layered upon an existing Maven project.)
9: internal -> org.apache.maven.archetypes:maven-archetype-site-simple (An archetype which contains a sample Maven site.)
10: internal -> org.apache.maven.archetypes:maven-archetype-webapp (An archetype which contains a sample Maven Webapp project.)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7: 1
Define value for property ‘groupId’: : test