Maven Archetype
项目作为模板
打包生成archetype
/opt/software/deploy-maven17/bin/mvn clean archetype:create-from-project -s /opt/software/deploy-maven17/config/settings.xml
其中-s
表示指定的settings文件,默认会使用/root/.m2/settings.xml
另注意:当在idea中执行时,会由于有.idea文件夹的原因,导致打包容易出现插件占用文件而执行失败。
发布archetype
cd target/generated-sources/archetype
/opt/software/deploy-maven17/bin/mvn deploy -s /opt/software/deploy-maven17/config/settings.xml
下载
mvn archetype:generate
-DarchetypeGroupId=com.my.app-template
-DarchetypeArtifactId=my-template-archetype
-DarchetypeVersion=1.0.0-SNAPSHOT
-DgroupId=com.my.app
-DartifactId=my-app
-Dpackage=com.my.app
-Dversion=1.0.0-SNAPSHOT
-DappName=my-app
高级用法
对于模板希望有些内容需要被下载方统一被替换,因此需要使用高级使用方式。
例如:XXX为模板统一定义的占位格式要求
AppXXXConfiguration.java -> AppCarConfiguration
1. pom.xml引入archetype plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<propertyFile>archetype.properties</propertyFile>
<encoding>UTF-8</encoding> <archetypeFilteredExtentions>java,xml,yaml,yml,properties,md</archetypeFilteredExtentions>
</configuration>
</plugin>
</plugins>
2. 工程根目录下定义archetype.properties
在工程根目录下创建archetype.properties,此名称和maven-archetype-plugin中定义的propertyFile
名称一致
archetype.properties文件中填写占位符对应关系:
例如:
AppClassName=XXXX
appName=xxxx
3. 执行mvn archetype:create-from-project
执行生成archetype的命令
5. 移除修改文件
执行archetype命令后,真正打包发布的文件会出现在target/generated-sources/archetype下
- 修改pom.xml,移除archetype-plugin文件
- 移除.idea,.iml等与项目无关的信息
- META-INF下archetype-metadata.xml文件中defaultValue移除掉,让使用者必须输入
6. maven Clean Install
安装到本地可以试验,安装到本地的无法被找到下载,因此需要再执行mvn archetype:crawl
,或者下载使用本地 -DarchetypeCatalog=local
注意:
- 类和包之类文件的占位符archetype使用前后双下划线占位,例如:XXXX
- 当不适用plugin时,自己定义archetype-metadata.xml中的配置时,且要求用户必须输入时,因有整合测试需要key对应的实际值,因此会报错,需要手动在archetype/src/test/resources/projects/basic/archetype.properties中自行添加
custom_app=XXXX
。
<requiredProperties>
<requiredProperty key="custom_app">
<!--<defaultValue>XXXX</defaultValue>-->
</requiredProperty>
</requiredProperties>