自定义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.0
    
      com.vczyh.archetypes
      archetype-test
      1.0-SHAPSHOT
      jar
    
    
    
  • src/main/resources/archetype-resources/pom.xml

    
    
    
      4.0.0
    
      ${groupId}
      ${artifactId}
      ${version}
      war
    
      
        UTF-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
      test
    
    
      org.apache.maven.archetypes
      maven-archetype-quickstart
      1.3
      quickstart
    
    
      org.apache.maven.archetypes
      maven-archetype-quickstart
      1.4
      quickstart
    
    
      org.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)]

如果需要额外的参数,需要在这里添加,比如示例中的port,否则创建失败

示例代码

你可能感兴趣的:(自定义Maven模板(Archetype))