自定义MavenArchetype之maven-archetype-archetype

Maven自身提供了许多Archetype来方便用户创建Project,但是每个团队都可能会有一些常用的文件或配置,为了避免在创建project时重复的拷贝和修改,我们通过自定义Archetype来规范显得还蛮有必要,下面简单介绍下使用maven-archetype-archetype来构建自己的Archetype的过程。

创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!创新互联具备承接各种类型的成都做网站、成都网站设计、成都外贸网站建设项目的能力。经过10余年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。

1,创建自己的Archetype项目

模板

mvn archetype:generate   \
  -DarchetypeGroupId=  \
  -DarchetypeArtifactId= \
  -DarchetypeVersion=   \
  -DgroupId= \
  -DartifactId=

例如:

mvn archetype:generate \
  -DgroupId=com.ultrapower.maven.archetypes \
  -DartifactId=springboot-maven-archetype  \
  -DarchetypeArtifactId=maven-archetype-archetype   \
  -DinteractiveMode=false \
  -X

自定义Maven Archetype之 maven-archetype-archetype

1) springboot-maven-archetype下的pom.xml和一般的maven项目一样用于定义archetype项目的坐标等信息
2) springboot-maven-archetype/src/main/resources/archetype-resources下的所有内容定义了待生成项目的所有文件(原型文件)
3) springboot-maven-archetype/ src/main/resources/META-INF/maven/archetype.xml中定义骨架的描述符(元数据),这个文件列出了包含在archetype中的所有文件并将这些文件分类。

注:springboot-maven-archetype/pom.xml如下


    4.0.0
    com.ultrapower.maven.archetypes
    springboot-maven-archetype
    1.0-SNAPSHOT
    Archetype - springboot-maven-archetype
    http://maven.apache.org

2,修改archetype-resources下的pom.xml,添加需要的配置

如:


    4.0.0
    ${groupId}
    ${artifactId}
    ${version}
    jar
    ${artifactId}
    http://www.myorganization.org

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.0.RELEASE
         
    
    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            io.springfox
            springfox-swagger2
            2.8.0
        
        
            io.springfox
            springfox-swagger-ui
            2.8.0
        
        
            org.apache.commons
            commons-lang3
        
        
            junit
            junit
            3.8.1
            test
        
    

3,添加需要的文件

例如:
自定义Maven Archetype之 maven-archetype-archetype

如Application.java

package ${package};

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
        JmsAutoConfiguration.class })
@ServletComponentScan
@ComponentScan(basePackages = { "${package}" })
public class Application {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);
        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);
    }
}

如CorsConfig.java

package ${package}.config.beanconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 1 设置访问源地址
        corsConfiguration.addAllowedOrigin("*");
        // 2 设置访问源请求头
        corsConfiguration.addAllowedHeader("*");
        // 3 设置访问源请求方法
        corsConfiguration.addAllowedMethod("*");
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 4 对接口配置跨域设置
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}

4,修改archetype.xml文件

如:



    springboot-maven-archetype
    
        src/main/java/Application.java
        src/main/java/config/beanconfig/MvcConfig.java
        src/main/java/config/beanconfig/CorsConfig.java
        src/main/java/config/beanconfig/RestTemplateConfig.java
        src/main/java/config/beanconfig/Swagger2Config.java
        src/main/java/config/condition/Swagger2Condition.java
    
    
        src/main/resources/application.yml
        src/main/resources/application-dev.yml
        src/main/resources/application-prod.yml
        boot/control.sh
        boot/control.bat
    
    
        src/test/java/AppTest.java
    

上面是将每个文件都列出来了,还可以使用通配符的方式来简化配置,例如:



    springboot-maven-archetype
    
        src/main/java/**/*.*
    
    
        **/*.*
    
    
        src/test/java/AppTest.java
    

5,安装archetype

mvn install

6,使用自定义的archetype创建项目

mvn archetype:generate  -DarchetypeGroupId=com.ultrapower.maven.archetypes  -DarchetypeArtifactId=springboot-maven-archetype  -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.ultrapower.ioss -DartifactId=springboot-archetype-test -X

注意: 我们可以将archetype.xml换成“archetype-metadata.xml”,以下的内容可以达到同样的效果,但还是推荐archetype.xml

archetype-metadata.xml:



    
        
    

    
        
            src/main/java
            
                **/*.java
            
        
        
            src/main/resources
            
                **/*.*
            
        
        
            boot
            
                **/*.*
            
        
        
            src/test/java
            
                **/*.java
            
        
        
            src/test/resources
            
                **/*.*
            
        
    

名称栏目:自定义MavenArchetype之maven-archetype-archetype
文章起源:http://hbruida.cn/article/ieipse.html