【单模块】制作Maven Archetype

前言

对于一个组织而言,有相同骨架的项目结构肯定有利于对整个项目生命周期的管理,比如流水线不需要特别为每一个项目定制化。同时,有相同骨架的项目,也可以让开发者更快地投入开发,不需要再去纠结环境问题。Maven的Archetype就为我们提供了这样的便利,Archetype定义了项目的模版,在生成的时候,输入gav(GroupId, ArtifactId, Version)还有package就能够生成目标模版的项目。这里主要介绍了【单模块】项目骨架的制作过程。

步骤

这里以创建最基础的SpringBoot项目为例,项目只包含了spring-boot-starter-web这个显示声明的依赖,现在将其做成Maven Archetype骨架

创建基础项目

在这里插入图片描述

从基础项目生成Maven Archetype工程

使用以下命令,快速从当前项目创建Maven Archetype工程。

mvn -s "/path/to/maven/settings.xml" archetype:create-from-project

其中

  • -s指向了Maven Settings.xml路径

编辑archetype-metadata.xml

上述命令执行成功之后,会在当前项目的target/generated-sources/archetype目录下生成Maven Archetype工程。现在要修改项目的archetype-metadata.xml,以实现一个最经常使用的功能:

  • 根据项目初始化时传入的参数,自动生成包名
    在这里插入图片描述
    打开项目的archetype-metadata.xml,会发现文件由一个个fileSet标签构成
    在这里插入图片描述每一个fileSet定义一个目录,以及与该目录相关的包含或排除规则。每一个fileSet有两个属性:
  • filtered → \rightarrow 表示是否对该文件集合应用属性替换。例如,像${x}这样的内容,是否被替换为命令行入参x的值
  • packaged → \rightarrow 表示是否将该目录下的内容放到生成项目的包路径下

附:
创建Archetype时,必须要提供的几个参数

  • groupId: 创建项目的groupId
  • artifactId: 创建项目的artifactId
  • version: 创建项目的version
  • package: 创建项目的默认Java包名

我们通常需要将*.java文件放到对应的包下,所以在在上图红框处的fileSet的package属性,要设置为true

如果要把.gitignore添加到archetype,按照常理修改fileSet路径可能不行,据说是bug,我用Maven 3.6.1,是不行的~可以参考这篇问答的做法:Maven archetype plugin doesn’t let .resources in archetype-resources through

修改完成的archetype-metadata.xml如下(看看就好,没有啥参考价值)

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" name="demo"
    xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <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>**/*.properties</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>.idea/libraries</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>.idea/inspectionProfiles</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </fileSet>
  </fileSets>
</archetype-descriptor>

安装 or 发布

进入到Maven Archetype工程根目录,这里是target/generated-sources/archetype,运行以下指令,安装到本地

mvn clean install

安装完毕后,就可以在本地仓库找到对应的archetype了
在这里插入图片描述

使用

两种方式,一种是添加到IDEA,另外一种是使用命令行。都可以百度到,或者问一下chatGPT,这里就记录一下使用命令行生成的命令(做个笔记)。

 mvn archetype:generate \
 -DarchetypeGroupId=com.example \
 -DarchetypeArtifactId=demo-archetype \
 -DarchetypeVersion=0.0.1-SNAPSHOT \
 -DgroupId=cn.acmsmu \
 -DartifactId=test-project \
 -Dversion=1.0 \
 -Dpackage=cn.acmsmu.test \
 -DarchetypeCatalog=local \
 -DinteractiveMode=false

这样,我们就创建了一个项目,我们将项目打开看一下目录结构是否符合预期
在这里插入图片描述
可以看到,java文件在我们的指定的目录下。

参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值