把项目打包成Maven Archetype(单模块项目脚手架)

官方教程

1 创建一个工程,单模块的,项目结构如下

在这里插入图片描述

工程规范:项目的groupId要和顶级包名一致。

不然创建出来的模板要手工改很多地方,一致的话就可以直接用${groupId}代替了。
在这里插入图片描述

2 pom.xml加入maven-archetype-plugin插件

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-archetype-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
            	<propertyFile>archetype.properties</propertyFile>
            </configuration>
        </plugin>
    </plugins>
</build>

3 新增Maven环境变量MAVEN_OPTS

-Xms256m -Xmx512m -Dfile.encoding=UTF-8

4 新增archetype.properties

当我们使用 maven-archetype-plugin 插件基于当前项目生成一个 archetype 模板项目时,该插件默认会把当前项目下所有的文件都会打包到 jar包中。

实际上我们希望在 build 的时候能过滤一些非必要的文件目录,如 .idea目录、 README.md 等,这时只需要在构建的时候,配置一个 archetype.properties 文件参数,并在其中定义 excludePattern 属性来过滤文件或目录。

excludePatterns 参数可以指定多个过滤条件,以英文逗号分割即可。

不过需要注意的是,如果想过滤整个目录,如 .idea 目录,需要配置为: .idea/* 而不能仅填写为 idea ,这个 .gitignore 配置还是有差别的。

# 打包过滤文件
excludePatterns=.idea/*,.git,*.iml,.idea/

5 添加.gitignore

.gitignore重命名为__gitignore__,然后在archetype.properties中加入以下内容

gitignore=.gitignore

6 构建archetype

进入工程目录,运行以下命令

mvn archetype:create-from-project --settings D:\DevelopTools\apache-maven-3.6.3\conf\settings.xml

构建完成后会在target看到这个archetype

在这里插入图片描述

7 安装archetype到本地仓库

进入创建好的Archetype所在目录:target\generated-sources\archetype

运行以下命令

mvn install

8 使用自定义archetype

进入一个新的目录,执行以下命令

mvn archetype:generate -DarchetypeCatalog=local

这里选3,就是刚才生成的那个archetype

在这里插入图片描述

依次填上groupId ,artifactId,version,package,然后回车输入Y即可创建一个新的工程

在这里插入图片描述

创建完毕

在这里插入图片描述

9 打开工程并验证

新的工程和原工程一样

在这里插入图片描述

现在启动并验证

在这里插入图片描述

输入http://localhost:8080/hello,可以看到成功

在这里插入图片描述

10 文件属性替换

找到项目的target\generated-sources目录下有一个archetype文件,这个就是骨架文件。在里面有个archetype-metadata.xml,这个文件是基础配置。
在这里插入图片描述
如果在配置文件或其它地方有用到Archetype的变量,如在application.yml的spring.application.name

spring:
  application:
    name: ${
    
    artifactId}

这样就需要在archetype-metadata.xml配置yml的地方加上filtered="true",加了这个属性的会进行属性变量替换。如下

<fileSet encoding="UTF-8" filtered="true">
  <directory>src/main/resources</directory>
  <includes>
    <include>**/*.yml</include>
  </includes>
</fileSet>

加了以后,生成的新工程就会替换成对应的artifactId

spring:
  application:
    name: user-center

猜你喜欢

转载自blog.csdn.net/q283614346/article/details/126692547