自定义Maven Archetype之 maven-archetype-archetype

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

1,创建自己的Archetype项目

模板

mvn archetype:generate     -DarchetypeGroupId=<archetype-groupId>    -DarchetypeArtifactId=<archetype-artifactId>   -DarchetypeVersion=<archetype-version>     -DgroupId=<my.groupid>   -DartifactId=<my-artifactId>

例如:

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如下

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ultrapower.maven.archetypes</groupId>
    <artifactId>springboot-maven-archetype</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Archetype - springboot-maven-archetype</name>
    <url>http://maven.apache.org</url>
</project>

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

如:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>${groupId}</groupId>
    <artifactId>${artifactId}</artifactId>
    <version>${version}</version>
    <packaging>jar</packaging>
    <name>${artifactId}</name>
    <url>http://www.myorganization.org</url>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

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);
    }
}

4,修改archetype.xml文件

如:

<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd">

    <id>springboot-maven-archetype</id>
    <sources>
        <source encoding="UTF-8">src/main/java/Application.java</source>
        <source encoding="UTF-8">src/main/java/config/beanconfig/MvcConfig.java</source>
        <source encoding="UTF-8">src/main/java/config/beanconfig/CorsConfig.java</source>
        <source encoding="UTF-8">src/main/java/config/beanconfig/RestTemplateConfig.java</source>
        <source encoding="UTF-8">src/main/java/config/beanconfig/Swagger2Config.java</source>
        <source encoding="UTF-8">src/main/java/config/condition/Swagger2Condition.java</source>
    </sources>
    <resources>
        <resource encoding="UTF-8">src/main/resources/application.yml</resource>
        <resource encoding="UTF-8">src/main/resources/application-dev.yml</resource>
        <resource encoding="UTF-8">src/main/resources/application-prod.yml</resource>
        <resource encoding="UTF-8">boot/control.sh</resource>
        <resource encoding="UTF-8">boot/control.bat</resource>
    </resources>
    <testSources>
        <source>src/test/java/AppTest.java</source>
    </testSources>
</archetype>

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

<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd">

    <id>springboot-maven-archetype</id>
    <sources>
        <source encoding="UTF-8">src/main/java/**/*.*</source>
    </sources>
    <resources>
        <resource encoding="UTF-8">**/*.*</resource>
    </resources>
    <testSources>
        <source>src/test/java/AppTest.java</source>
    </testSources>
</archetype>

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:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="beast-archetype"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
            http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0
            http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd">

    <requiredProperties>
        <requiredProperty key="package" />
    </requiredProperties>

    <fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.java</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" encoding="UTF-8">
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" encoding="UTF-8">
            <directory>boot</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
            <directory>src/test/java</directory>
            <includes>
                <include>**/*.java</include>
            </includes>
        </fileSet>
        <fileSet encoding="UTF-8">
            <directory>src/test/resources</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
        </fileSet>
    </fileSets>
</archetype-descriptor>

原文地址:http://blog.51cto.com/dengshuangfu/2344615

时间: 2024-10-21 21:09:42

自定义Maven Archetype之 maven-archetype-archetype的相关文章

idea新建maven项目时,mvn archetype:generate 速度缓慢

原文 idea新建maven项目时,mvn archetype:generate 速度缓慢 1 现象: 用IDEA新建maven项目,填写完各种参数,创建时,控制台卡在“[INFO] Generating project in Batch mode”处: 同时,右下方状态栏处,显示创建过程仍在进行: 2 原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件. 该

maven系列之一maven安装和与IDE集成

第一部分:maven的基本信息和安装,配置  maven是一个项目构建和管理的工具,提供了帮助管理 构建.文档.报告.依赖.scms.发布.分发的方法.可以方便的编译代码.进行依赖管理.管理二进制库等等.maven的好处在于可以将项目过程规范化.自动化.高效化以及强大的可扩展性利用maven自身及其插件还可以获得代码检查报告.单元测试覆盖率.实现持续集成等等. maven常用的命令: Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http:/

Eclipse集成Maven(手工安装Maven且手工集成到Eclipse)

1.操作环境 操作系统:win8 64位 IDE:Helios Eclipse 1.8 JDK:1.6 2.资源准备 2.1 maven安装包: apache-maven-3.2.5-bin.zip  (适用JDK 1.6) 参考下载地址:http://mirrors.cnnic.cn/apache//maven/maven-3/3.2.5/ 2.2 maven集成包: eclipse-maven3-plugin.zip 参考下载地址:http://www.downcc.com/soft/175

linux下安装SVN和MAVEN,并依赖MAVEN环境打包MAVEN项目

一.前提条件 系统环境为: [[email protected] application]# cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] application]# uname -r 2.6.32-573.el6.x86_64 需要准备的安装包为: subversion-1.6.1.tar.gz subversion-deps-1.6.1.tar.gz apache-maven-3.3.3-bin.t

(推荐)不用archetype创建maven项目

已剪辑自: https://www.cnblogs.com/wql025/p/5215570.html 说明 创建Maven项目的方式:手工创建 好处:项目干净整洁,java和resource目录,不需要自己重新构建.pom文件干净,没有乱七八糟的东西.不会再网络不好,或者各种问题的时候,出现archetype加载半天出不来的情况. 更为关键的是用这种方式创建的maven项目的web.xml的版本可自己手工选择:(不会再出现之前的不支持EL什么的坑了.) 创建一个新Maven项目 new 一个p

新建maven项目时,mvn archetype:generate 速度缓慢

来自:http://www.bubuko.com/infodetail-1110458.html 一.原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件. 该命令的参数-DarchetypeCatalog,可选值为:remote,internal  ,local等,用来指定archetype-catalog.xml文件从哪里获取.默认为remote,即从htt

Maven系列学习(一)Maven基本知识

Maven 简介 1.Maven主要是基于Java平台的项目构建,依赖管理和项目信息 2.Maven是优秀的构建工具,跨平台,消除构建的重复,抽象了一个完整的构建生命周期模型,标准化构建过程 3.管理分布的项目信息,版本控制系统,轻松获取项目文档,测试报告,静态分析报告,版本日志报告等 4.极限编程(XP)的搭配是非常不错的,比如持续集成(CI) 5.在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件,构件存储在仓库,(仓库就是存放依赖和插件的地方),任何的构件都有唯一的坐标

Maven整理笔记のMaven仓库

Maven坐标和依赖是任何一个构件在Maven世界中的逻辑表示方式:而构件的物理表示方式是文件,Maven通过仓库来统一管理这些文件.  Maven仓库 在Maven的世界中,任何一个依赖.插件或者项目构建的输出,都可以称为一个构件.如项目依赖log4j-1.2.15.jar是一个构件,插件maven-compiler-plugin-2.0.3.jar是一个构件,我们自己的Maven项目构建完成后的输出.jar/war文件也是一个构件.任何一个构件都有一组坐标唯一标识.在我们项目开发中,往往可能

Java-Maven(三):Maven相关的概念:Maven坐标、Maven仓库、Maven声明周期

之前通过学习对maven命令有了部分了解,但是只是知道maven是用来做什么.但到目前位置还不足以全面的了解maven,为更全面的了解maven,需要学习以下几个概念:Maven坐标.Maven仓库.Maven生命周期. Maven坐标 maven坐标概念:每个构件都有自己的一个标识(唯一的),它由groupId,artifactId,version等信息组成,因此maven就可以对构件进行版本控制.管理. 备注: groupId :公司名称或者组织名称: artifactId:项目名称: ve

maven工程运行maven test提示JAVA_HOME 未配置的解决

maven工程运行maven test提示JAVA_HOME 未配置的解决: ----- 以下内容转自http://blog.sina.com.cn/s/blog_9ba71d0b01014bux.html JDK (Java Development Kit) Java开发工具包,很直白的说就是为开发人员准备的SDK. SDK (Software Development Kit)软件开发包.所以我们解压JDK 会发现在安装位置 有一个JDK有一个JRE(Java Runtime Envirome