maven构建自己的java模板项目

1,751 阅读2分钟
字数706
阅读时间7分钟
阅读人群后端开发

什么是 maven archetype

Maven Archetype是一个Maven项目模板创建工具。它的主要作用是:

  1. 让开发者可以通过一个交互式程序或者一个配置文件快速的生成一个Maven项目结构。
  2. Maven Archetype定义了一个项目的基本结构,包括:
    • pom.xml:Maven项目的核心配置文件
    • 资源文件目录:src/main/resources
    • java源代码目录:src/main/java
    • 测试资源文件目录:src/test/resources
    • 测试java源代码目录:src/test/java
  3. 当使用某个Maven Archetype时,它会提问开发者一些与项目相关的信息,如:
    • groupId:项目/组织唯一标识符
    • artifactId:项目的唯一名称
    • version:项目的版本号
    • package:项目的层次结构
  4. 然后Maven Archetype会使用这些信息在本地文件系统上创建一个项目结构,并填写相关的配置文件(如pom.xml)
  5. 开发者不再需要手工创建文件夹和文件,或者编写模板pom.xml配置等,只需要输入必要信息,就可以快速创建一个Maven项目结构,开始开发和构建。

一个 Java maven archetype 模板创建步骤

增加 java 项目 pom 插件


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-archetype-plugin</artifactId>
            <version>3.1.2</version>
        </plugin>
    </plugins>
</build>

生成 maven archetype 模板文件夹

mvn archetype:create-from-project

image.png

自定义你的 maven archetype 模板文件

自定义你的模板替换和生成规则

vi target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
<archetype-descriptor>
    <!-- 过滤规则 filtered 表示是否过滤 -->
    <fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.java</include>
            </includes>
            <excludes>
                <exclude>com/zarek/dockerjava/DockerjavaApplication.java</exclude>
            </excludes>
        </fileSet>
    </fileSets>
    <!-- 过滤所使用的必填属性,再进行脚手架创建项目的时候一定要填写 -->
    <requiredProperties>
        <requiredProperty key="MODULE_NAME">
            <defaultValue>zarek-webdemo</defaultValue>
        </requiredProperty>
    </requiredProperties>
</archetype-descriptor>
属性作用
filtered是否启用 archetype.properties 过滤替换 includes 包含 requiredProperties 的所有属性的值
packaged是否将生成的包路径加上package路径
requiredProperty创建maven模板文件所必须的属性,这个属性可以被替换到指定的文件中

自定义你的模板替换的文件里的值

vi target/generated-sources/archetype/src/test/resources/projects/basic/archetype.properties

package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic
MODULE_NAME=smc-default

安装 maven archetype 模板文件

cd target/generated-sources/archetype/
mvn clean install

使用 maven 模板创建项目

# 非交互方式
mvn archetype:generate -DMODULE_NAME=zarek-demo -DgroupId=com.zarek.demo -DartifactId=demo-project -Dversion=1.0.0 -Dpackage=com.zarek.demo -DarchetypeGroupId=com.zarek -DarchetypeArtifactId=dockerjava-archetype -DarchetypeVersion=0.0.1-SNAPSHOT -DinteractiveMode=false

# 交互方式
mvn archetype:generate -DMODULE_NAME=zarek-demo

发布 maven 模板到远程仓库

mvn deploy

参考文章

架构师必备技能:Maven Archetype生成项目模板 - 腾讯云开发者社区-腾讯云 (tencent.com)