千家信息网

自定义Maven Archetype之 archetype:create-from-project

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,前面讲过通过Maven原型maven-archetype-archetype来创建自定义Archetype的方法,但是这种方法似乎不太方便验证文件的正确性,这里将使用maven-archetype-p
千家信息网最后更新 2025年01月23日自定义Maven Archetype之 archetype:create-from-project

前面讲过通过Maven原型maven-archetype-archetype来创建自定义Archetype的方法,但是这种方法似乎不太方便验证文件的正确性,这里将使用maven-archetype-plugin插件的create-from-project目标来从一个project中创建archetype

1,创建用于创建archetype的project

mvn archetype:generate -DgroupId=com.ultrapower.archetypes -DartifactId=ultra-template-archetype -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1.0 -DinteractiveMode=false

其中关于添加相关的依赖等这里忽略

2,打开cmd,在project的根目录执行以下命令

mvn archetype:create-from-project

通过该命令,会在target目录下面生成generated-sources/archetype目录,这个就是生成的 archetype。 (同时,generated-sources\archetype\src\main\resources\META-INF\maven下的文件archetype-metadata.xml可能需要调整)

先来看看archetype下的pom.xml都包含些什么内容

  4.0.0  com.ultrapower.archetypes  ultra-template-archetype-archetype  1.0  maven-archetype  ultra-template-archetype-archetype                    org.apache.maven.archetype        archetype-packaging        3.0.1                                      maven-archetype-plugin          3.0.1                      Parent pom providing dependency and plugin management for applications        built with Maven  http://maven.apache.org            Pivotal      info@pivotal.io      Pivotal Software, Inc.      http://www.spring.io                  Apache License, Version 2.0      http://www.apache.org/licenses/LICENSE-2.0            https://github.com/spring-projects/spring-boot/spring-boot-starter-parent/ultra-template-archetype  

我们再打开archetype-metadata.xml文件看看里面的内容,并做可能的必要修改【可能默认包含了些你不需要的文件】

            src/main/java              **/*.java        **/*.xml                    src/main/resources              **/*.xml        **/*.html                    src/main/resources              **/*.yml                    src/test/java              **/*.java                    lib              **/*.jar                    boot              **/*.bat        **/*.sh                    .settings              **/*.prefs                                  .classpath        .project            

将最后的两项去掉即可满足需要了

      .settings              **/*.prefs                                  .classpath        .project          

在此简单说下几个属性的含义(完整的说明参考官网archetype-metadata.xml详解)
1)filtered :被选择的文件是否当做 Velocity 模板来使用(如果是true则可以使用Velocity的表达式,例如用于动态设置包名等)
2)packaged:被拷贝或生成(通过Velocity生成)的文件是否在package属性预先设置的目录结构下进行存放
3)encoding:设置文件的字符编码

3,cd进入generated-sourced/archetype目录并执行以下命令

mvn install

通过以上操作便会将自定义的archetype安装到maven仓库中,同时会在仓库根目录下的archetype-catalog.xml文件中添加自定义archetype的信息(没有会自动创建该文件)

4,使用自定义的archetype创建project

mvn archetype:generate  -DarchetypeGroupId=com.ultrapower.archetypes  -DarchetypeArtifactId=ultra-template-archetype-archetype  -DarchetypeVersion=1.0 -DgroupId=com.ultrapower.ioss -DartifactId=ultra-template-archetype-test -X

至此,一个新的project便生成


重要:对于某些java和文本文件里面的配置可能需要动态修改,所以需要手动的调整archetype下的文件,在此不再赘述

在安装完成后,在本地仓库的根路径下会生成一个文件"archetype-catalog.xml",里面便记录了自定义骨架的坐标,例如:

            com.ultrapower.archetypes      ultra-template-archetype-archetype      1.0      Parent pom providing dependency and plugin management for applications        built with Maven      
0