千家信息网

自定义Maven Archetype之 maven-archetype-archetype

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,Maven自身提供了许多Archetype来方便用户创建Project,但是每个团队都可能会有一些常用的文件或配置,为了避免在创建project时重复的拷贝和修改,我们通过自定义Archetype来规
千家信息网最后更新 2025年02月01日自定义Maven Archetype之 maven-archetype-archetype

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

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

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,添加需要的文件

例如:

如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;@Configurationpublic 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                            **/*.*                        
0