如何开发一个项目脚手架

本文详细介绍了如何创建Maven项目模板,自定义上传至私有仓库,并利用其快速生成新的项目,包括了从开发模版、上传、到使用模版创建的整个流程,以及如何扩展实现更丰富的项目初始化功能。

原文链接

创建一个项目通常需要依赖很多的二/三方组件,我们很难记住每个组件的maven坐标,并且有些组件的初始化工作很繁琐,一堆配置项很难记住。如果没有脚手架,每当需要创建一个新的project,我们通常会选择基于现有的project复制一份,然后修改修改。

如果是纯粹的只使用spring的三方组件就能创建一个project,那么我们完全可以使用start.spring.io提供脚手架,但通常我们都会自己写一些二方组件,或者基于三方组件封装二方组件,然后发布到公有/私有maven仓库,这时我们就需要定制一个适用于自己/公司技术栈的new project脚手架了。

maven提供了基于项目模版创建新项目的能力,即maven项目脚手架。当我们在idea->new maven project时,idea也会提示我们是否根据模版创建项目,并提供了一些可选的模版,只是这些模版都不适合我们。但我们可以自己定制maven项目模版。

以下就是自己开发一个maven模版项目,并将模版项目上传到私有仓库,最后根据模版创建新项目的步骤。

  • 1.按正常项目开发,开发一个模版项目,假设项目坐标如下。

groupId=com.wujiuye.microservices.templateartifactId=microservices-templateversion=1.0.0
  • 2.创建为maven模版项目,执行下面命令。

mvn clean archetype:create-from-project

创建出来的模版项目,坐标的artifactId会被加上-archetype后缀,变成:

groupId=com.wujiuye.microservices.templateartifactId=microservices-template-archetypeversion=1.0.0
  • 3.将模版项目上传到模版仓库

进入/target/generated-sources/archetype目录下,修改pom.xml配置文件,添加私有仓库配置:

<distributionManagement>
    <repository>
      <id>release</id>
      <url>http://{{我们自己搭建的nexus maven私有仓库的域名}}/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
      <id>snapshots</id>
      <url>http://{{我们自己搭建的nexus maven私有仓库的域名}}/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
  </distributionManagement>

进入/target/generated-sources/archetype目录下,执行下面命令上传archetype

mvn clean deploy
  • 4.通过模版创建项目,执行下面命令

mvn -X archetype:generate -B \
    -DarchetypeGroupId=${替换为模版的groupId,例如:com.wujiuye.microservices.template} \
    -DarchetypeArtifactId=${替换为模版的artifactId,例如:microservices-template-archetype} \
    -DarchetypeVersion=${替换为模版的version} \
    -DgroupId=${替换为项目groupId} \
    -DartifactId=${替换为项目artifactId} \
    -Dversion=${替换为项目version} \
    -Dpackage=${替换为项目package} \

执行以上命令也可以使用临时的mvn环境变量,使用临时的mvn环境,如下:

  1. 先配置临时mvn环境

M2_HOME=/Users/wujiuye/projects/microservices-initializr/apache-maven
export PATH=$PATH:$M2_HOME/bin
  1. 创建为maven模版项目

mvn clean archetype:create-from-project
  1. 使用指定的settings.xml文件,将模版项目上传到模版仓库

同样需要进入/target/generated-sources/archetype目录下,修改pom.xml配置文件,添加私有仓库配置,再执行下面的命令。

cd target/generated-sources/archetype   
mvn clean deploy --settings /Users/wujiuye/.m2/settings.xml

maven提供的脚手架功能还是相对简单的,我们只能替换下项目的groupId、artifactId、version、package这些。但我们可以基于此,开发一个更完善的脚手架,并提供像start.spring.io提供的勾勾点点就能自动生成项目的一个脚手架网页。

首先,我们创建一个web项目,然后将根据maven模版坐标创建模版项目的功能封装到web项目。提供一个api,前端调用一下,就通过执行shell脚本,执行mvn -X archetype:generate命令创建模版项目。

bc8496275932b9dab02a377406570adc.png

然后,我们就可以基于生成的模版项目去实现更多的定制化功能了。例如,实现按需勾选依赖组件功能。

9d84d399d5ca52ab90ae02b3d4ef89fb.png

前端获取可选依赖库展示,后端根据前端传递的用户勾选的依赖项,先读取项目的pom.xml依赖配置文件,写入勾选的依赖的maven坐标。再根据勾选的依赖,添加初始化代码,以及添加配置项。例如在Main类上添加@EnableXxx注解,在application.yaml配置文件中添加配置项。

其中的难点是如何修改pom.xml配置文件、application.yaml配置文件,以及如何修改java源码文件。读写xml文件可使用dom4j组件实现,读写yaml文件可使用snakeyaml组件实现,而修改java源码文件可使用javaparser组件实现。

最后,将模版项目压缩成jar包,响应jar包的下载链接给前端,前端使用下载链接生成下载按钮。

75ee658e6022cd287f9f75c2aad0bea3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴就业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值