创建archetype项目
创建Parent
- 利用IDEA创建骨架项目,名称例如archetype-all
- Pom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<artifactId>archetype-all</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>3.2.0</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
- 可添加骨架自定义的目录文件等,例如.ignore等
创建多Module
- 名称如archetype-common、archetype-processor、archetype-provider
- 各module创建目录,包括源、资源、测试、数据等
- 各模块添加骨架文件,例config、util、主入口文件等
- clean install,检查包冲突和异常等
- 运行调试,保障项目运行正常
生成骨架
创建骨架
当前项目根目录下,执行mvn archetype:create-from-project
进入target/generated-sources/archetype目录,即为利用当前项目生成骨架结果。
修改骨架名称pom.xml
artifactId和name,默认会加archetype,可调整。
调整多模块骨架名称
进入target/generated-sources/archetype/src/main/resources/archetype-resources/
修改module的目录名称
rootArtifactId-common
rootArtifactId-processor
rootArtifactId-provider
确认.ignore等文件是否包含,没有的话手动添加。
Parent Pom添加多modules1
2
3
4
5<modules>
<module>${rootArtifactId}-common</module>
<module>${rootArtifactId}-processor</module>
<module>${rootArtifactId}-provider</module>
</modules>
Parent Pom添加多modules依赖1
2
3
4
5
6
7
8
9
10<dependency>
<groupId>xxx</groupId>
<artifactId>${rootArtifactId}-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>xxx</groupId>
<artifactId>${rootArtifactId}-processor</artifactId>
<version>${project.version}</version>
</dependency>
确认子module Pom的artifactId名称1
2<artifactId>${artifactId}</artifactId>
<packaging>jar</packaging>
修改子module Pom的依赖module artifactId名称1
2<artifactId>${rootArtifactId}-common</artifactId>
<artifactId>${rootArtifactId}-processor</artifactId>
修改archetype-metadata.xml配置,位于arget/generated-sources/archetype/src/main/resources/META-INF/,替换样例:1
<module id="${rootArtifactId}-module1" dir="__rootArtifactId__-module1" name="${rootArtifactId}-module1">
安装和测试骨架
骨架目录target/generated-sources/archetype/
执行mvn install
安装到本地
测试,执行mvn archetype:generate -DarchetypeCatalog=local
,选择骨架和生产项目信息
部署:
mvn deploy
命令行测试:1
mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate -Dfilter=archetype-all -DarchetypeCatalog=http://xx.xxx.com/nexus/content/repositories/releases/
自定义包名称
pom.xml头部添加:1
2
3
4
5
6
7
8
9#set ($artifactId = "${artifactId}")
#set ($index = $artifactId.indexOf('.'))
#if ($index < 0)
#set ($appName = $artifactId)
#else
#set ($index = $index + 1)
#set ($appName = $artifactId.substring($index))
#end
#set ($appPackage = "${groupId}." + $appName)
取artifactId得后半部分赋值给appName变量, archetype-metadata.xml中添加:1
2
3
4
5
6
7<requiredProperty key="appName">
<defaultValue>${appName}</defaultValue>
</requiredProperty>
<requiredProperty key="appPackage">
<defaultValue>${appPackage}</defaultValue>
</requiredProperty>
修改目录名为:
src/main/resources/xx/appName/
移除本地 自定义 archetype
~/.IntelliJIdea2016.2/system/Maven/Indices/UserArchetypes.xml