基于maven的项目脚手架,一键创建项目的项目模板

制作基于maven项目脚手架

Springboot的出现极大的简化了项目开发的配置,然而,到真实使用的时候还是会有一堆配置需要设定。比如依赖管理,各种插件,质量扫描配置,docker配置,持续集成配置,设置业务独特的架构配置等。这时候,如果创建一个包含这一切的脚手架,当需要创建目的时候,只要create就好了。

create archetype from project

首先准备一个模板项目,包含了我们想要创建项目的一切基本属性。比如基本dependency bom,比如plugin,比如logback.xml, Dockerfile, Jenkinsfile, k8s.yml等.

比如这样的:

基于maven的项目脚手架,一键创建项目的项目模板

我们期望以后创建的项目都是这种结构,而且生成就可以直接运行,我只要添加我的业务逻辑即可。

首先,执行

mvn clean install

确保项目没有任何问题。然后

mvn archetype:create-from-project

执行完毕会生成了结构项目:

基于maven的项目脚手架,一键创建项目的项目模板

可以看到大部分文件都拷贝过来了,但依旧有几个文件丢失,比如Jenkinsfile, Dockerfile. 手动拷贝过来。还有些文件不需要,比如.idea的配置文件,删除。确定文件没有问题之后,查看target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml文件,里面定义了哪些文件包含。把不需要的去掉,把需要的加上。比如,导致丢掉Jenkinsfile的配置修改为

<fileSet encoding="UTF-8"> <directory>.deploy</directory> <includes> <include>**/*</include> <include>**/*.yaml</include> </includes> </fileSet>

去掉.idea的配置。

如果代码里有groupId和artifactId的独特配置,观察下有没有变量替换。比如

@MapperScan(basePackages = "${package}.domain.mymodule.mapper")

我们可以使用${package}, ${group}, ${artifactId}, ${version}来代替一些变量。比如,我发现application.yml这个文件没有被替换,里面有重要的spring.application.name应该替换为项目名称。手动修改为 ${artifactId}。这还不行,修改archetype-metadata.xml

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

添加了filtered。

filtered表示是否替换文件中的变量

packaged表示是否在文件前缀添加group

接下来把模板安装到本地仓库

cd target\generated-sources\archetype mvn clean install

就可以直接使用模板创建项目了。

根据本地模板创建项目

注意我们的模板版本在pom里,比如我的修改几次后版本为1.0.2。则可以

mvn archetype:generate \ -DarchetypeCatalog=local \ -DgroupId=com.demo.mybiz \ -DartifactId=mybiz-myid \ -DarchetypeGroupId=com.demo \ -DarchetypeArtifactId=demo-boot-archetype \ -DarchetypeVersion=1.0.2 \ -DinteractiveMode=false \

archetypeCatalog=local表示使用本地仓库

interactiveMode=false表示不是交互模式,不用选择

groupId=com.demo.mybiz 你新项目的group

artifactId=mybiz-myid 你新项目的id

archetypeGroupId=com.demo 我们模板的group

archetypeArtifactId=demo-boot-archetype 我们模板的id

archetypeVersion=1.0.1 我们模板的版本

打开查看,确认生成的项目

基于maven的项目脚手架,一键创建项目的项目模板

没有任何问题之后,可以发布模板。

发布模板到maven私服

发布maven私服就和发布普通maven项目一样,配置好url就可以了。
pom添加

<distributionManagement> <repository> <id>my-releases</id> <url></url> </repository> <snapshotRepository> <id>my-snapshots</id> <url></url> </snapshotRepository> </distributionManagement>

其中id一定要对应本地maven的settings.xml

<servers> <server> <id>my-snapshots</id> <username>myuser</username> <password>mypass</password> </server> <server> <id>my-releases</id> <username>myuser</username> <password>mypass</password> </server> </servers>

最后执行

mvn deploy

之后可以直接使用,去掉archetypeCatalog=local即可。

后续展望

脚手架方便生成了公司的基本项目配置和架构,其实还可以做更多。比如对应CI Jenkins的job可以一键生成,比如代码生成后直接创建gitlab项目,关联Jenkins,比如监控面板添加项目配置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsysz.html