自定义Maven模板(Archetype)

常用的Archetype

  • macen-archetype-quickstart
  • macen-archetype-webapp
编写Archetype 自定义archetype关键目录
  • pox.xml Archetype自身的pox.xml
  • src/main/resources/archetype-resources/pom.xml 基于该Archetyoe生成的项目的POM原形
  • src/main/resources/META-INF/maven/archetype-metadata.xml Archetype的描述文件
  • src/mian/resources/archetype-resources/** 其他需要包含在Archetype中的内容
一个简单的Archetype [图片上传失败...(image-c556f9-1545899546093)]
  • pom.xml
    4.0.0com.vczyh.archetypes archetype-test 1.0-SHAPSHOTjar

  • src/main/resources/archetype-resources/pom.xml
    4.0.0${groupId} ${artifactId} ${version}warUTF-8 1.8 1.8 junit junit 4.11 test ${artifactId}

  • src/main/resources/META-INF/maven/archetype-metadata.xml

  • 根目录运行,项目会安装到本地仓库,至此,一个简单的Archetype已经完成了
    mvn clean install

  • 使用Archetype,groupIdartifactIdversion对应上面的pom.xml
    mvn archetype:generate -DarchetypeGroupId="com.vczyh.archetypes" -DarchetypeArtifactId="archetype-test" -DarchetypeVersion="1.0-SHAPSHOT"

    [图片上传失败...(image-ac65b9-1545899546093)]
    生成的项目只有一个pom.xml,但也是一个Archetype
完善Archetype
  • 通过修改src/main/resources/archetype-resources/pom.xml可以添加默认依赖以及其他信息
  • 添加src/main/java src/main/resources src/test/java src/main/resources/application.properties
    [图片上传失败...(image-93da3d-1545899546093)]
    //App.java package ${package}; public class App { public static void main(String[] args) { System.out.println("Hello World!"); } }

    # application.properties # 使用${port}可以获取使用archetype时输入的参数port的值 port=${port}

  • 新建Archetype默认不会包含上面的目录,因此得修改src/main/resources/META-INF/maven/archetype-metadata.xml
    src/main/java**/*.java src/main/resources src/test/java **/*.java com.vczyh

  • 使用archetype创建项目
    [图片上传失败...(image-4ed378-1545899546093)]
    注意application.properties中的port已经变成输入的值
生成本地仓库的Archetype Catalog
mvn archetype:crawl

会扫描本地仓库,并且在${user}/.m2/repository生成archetype-catalog.xml,包含了遍历到的本地archetype,其中包含刚刚自定义的
com.vczyh.archetypes archetype-test 1.0-SHAPSHOT testorg.apache.maven.archetypes maven-archetype-quickstart 1.3 quickstartorg.apache.maven.archetypes maven-archetype-quickstart 1.4 quickstartorg.apache.maven.archetypes maven-archetype-webapp 1.4 webapp

添加到Catalog的方便之处在于不用每次使用archetype时写一长串命令
mvn archetype:generate

[图片上传失败...(image-92b24e-1545899546093)]
选择archetype的编号,比如这里的11即可
Idea使用Archetype [图片上传失败...(image-32ce0d-1545899546093)]
添加完成后使用
[图片上传失败...(image-827d7e-1545899546093)]
【自定义Maven模板(Archetype)】如果需要额外的参数,需要在这里添加,比如示例中的port,否则创建失败
示例代码

    推荐阅读