自定义maven archtype

文章来源原创   作者:许秋冬   发布时间:2020-07-01   阅读:1978   标签:maven

[toc]

自定义maven archtype

git 地址

总不能每次搭建开发环境都把重复的一堆东西复制一遍吧.

一 新建maven项目 vic-boot-archtype

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>pers.vic</groupId>
  6. <artifactId>vic-boot-archtype</artifactId>
  7. <version>1.0.0-SNAPSHOT</version>
  8. <name>一个简单的Archetype</name>
  9. <description>一个简单的springboot Archetype</description>
  10. <build>
  11. <plugins>
  12. <plugin>
  13. <groupId>org.apache.maven.plugins</groupId>
  14. <artifactId>maven-archetype-plugin</artifactId>
  15. <version>3.1.2</version>
  16. </plugin>
  17. </plugins>
  18. </build>
  19. </project>

二 在 src/main/resources下新建文件夹:

  • src/main/resources
    • archetype-resources: 在此文件下就是最终生成项目时候的所有原始文件
      • pom.xmp
    • META-INF
      • maven
        • archetype-metadata.xml: Archetype的描述文件
2.1 archetype-resources: 在此文件下就是最终生成项目时候的所有原始文件
  • 如pom.xml
  • src/main/java
  • src/test/java
  • src/mian/resources
  • 等等
2.2META-INF/maven下archetype-metadata.xml文件: Archetype的描述文件

archetype-metadata.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <archetype-descriptor name="vic-springboot">
  3. <fileSets>
  4. <!--fileSet对应一个目录以及该目录相关的包含或排除规则-->
  5. <!--filtered表示是否对该文件及合应用属性替换,像${x}这样的内容是否替换成命令行输入的x参数的值-->
  6. <!--packaged表示是否将该目录下的内容放到生成项目的包路径下-->
  7. <fileSet filtered="true" packaged="true">
  8. <!--src/main/java对应archetype-resources/src/main/java-->
  9. <directory>src/main/java</directory>
  10. <!--只包含archetype-resources/src/main/java下的.java文件-->
  11. <include>**/*.java</include>
  12. </fileSet>
  13. <!--resources一般没有包路径,所以packaged设置为false-->
  14. <fileSet filtered="true" packaged="false">
  15. <directory>src/main/resources</directory>
  16. <includes>
  17. <include>**/*.*</include>
  18. </includes>
  19. </fileSet>
  20. <fileSet filtered="true" packaged="true">
  21. <directory>src/test/java</directory>
  22. <include>**/*.java</include>
  23. </fileSet>
  24. </fileSets>
  25. <requiredProperties>
  26. <!--使用archetype时候必须要求输入的参数,archetype中可以使用${port}获取-->
  27. <requiredProperty key="port">
  28. <defaultValue>10081</defaultValue>
  29. </requiredProperty>
  30. <requiredProperty key="groupId">
  31. <!--可以设置默认值,使用archetype会使用默认值-->
  32. <defaultValue>pers.vic</defaultValue>
  33. </requiredProperty>
  34. </requiredProperties>
  35. </archetype-descriptor>

三 打包项目到本地仓库 clean install

四 通过maven-archetype-plugin插件更新模版

archetype:crawl 在一个指定的Maven库中查找可以的模板,并更新模板目录

运行此命令后在本地仓库生成一个文件archetype-catalog.xml

archetype-catalog.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
  3. xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5. <archetypes>
  6. <archetype>
  7. <groupId>pers.vic</groupId>
  8. <artifactId>vic-boot-archtype</artifactId>
  9. <version>1.0.0</version>
  10. <description>vic-springboot</description>
  11. </archetype>
  12. </archetypes>
  13. </archetype-catalog>

五 在eclipse|IDEA配置模版

Eclipse:Preferences >> Maven >> archetypes >> add local catalog….. 选在步骤四中的文件

IDEA: new Module -> maven -> create from Archetype->Add Archetyp->t填入groupId artifactId等

在新建maven project的时候就可以直接使用此模版了;

六 上传到本地私服

由于本人本地未搭建私服仓库, 故未验证此步骤

  1. setting.xml文件中配置servers节点
  2. 在pom.xml中加入repository节点
  3. mvn deploy

发表评论

目录