![]()
根本每个公司的我的项目都有一套模板,只有开新我的项目间接复制一份改改包名和一些配置就初始化了一个新我的项目。这种形式有点繁琐,有没有通过命令甚至是可视化的形式从一个模板我的项目初始化我的项目。Maven 其实有提供这种能力,这就是基于原型(Archetype
)的生成我的项目。
集成我的项目模板插件
首先须要在模板我的项目中集成 Maven 原型插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.2.0</version>
</plugin>
从我的项目生成模板
从我的项目生成模板只须要三步。
生成模板原型文件
Maven 插件容许咱们从已有我的项目生成一个模板我的项目。在 我的项目根目录 下执行 mvn archetype:create-from-project
命令即可将该我的项目生成一个我的项目模板,生成的我的项目原型被保留在门路 target/generated-sources/archetype
下。
然而这个存在一个问题,一些和我的项目模板源码无关的文件也会被退出模板中,比方 IDEA 中的 .iml
文件、.idea
目录下的文件。这些“垃圾”文件须要在生成模板时被疏忽。
maven-archetype-plugin
提供了一个属性配置能够帮忙咱们实现该能力。在原始我的项目的根目录(或者你喜爱的其它目录)编写一个 .properties
文件:
# 原型的坐标 必须申明
archetype.groupId=cn.felord
# 最好依照约定以 -archetype 结尾
archetype.artifactId=template-archetype
archetype.version=1.0
# 须要疏忽的文件夹和文件类型 英文逗号隔开
excludePatterns=**/.idea/**,**/*.iml
这时候执行生成的命令就须要指定该配置文件了:
mvn archetype:create-from-project -Darchetype.properties=./archetype.properties
留神:门路为配置文件和根目录的相对路径。
这样生成的原型就疏忽掉那些无用的文件了。仔细的同学会发现生成原型中的 pom.xml
的坐标变成了:
<groupId>cn.felord</groupId>
<artifactId>template-archetype</artifactId>
<version>1.0</version>
<packaging>maven-archetype</packaging>
<name>template-archetype</name>
装置生成的原型
咱们须要跳转的 target/generated-sources/archetype
下执行mvn install
在咱们本地 maven repository 目录(通常是 ~/.m2
)下会把以后原型注册到archetype-catalog.xml
中:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<archetypes>
<archetype>
<groupId>cn.felord</groupId>
<artifactId>template-archetype</artifactId>
<version>1.0</version>
<description>spring security learning demo</description>
</archetype>
</archetypes>
</archetype-catalog>
后续应用时 maven 会从这里检索咱们本地的模板。
利用原型生成我的项目
接下来验证一下成果,从本地原型生成我的项目须要执行:
mvn archetype:generate -DarchetypeCatalog=local
而后一个新我的项目就诞生了。
分享模板
模板分享基于 Maven 近程仓库,首先你要在你的 setting.xml
中配置一个近程仓库并且领有 deploy 的权限。而后在 target/generated-sources/archetype
下执行 mvn deploy
就行了。这里有两种形式来应用近程的原型模版。
IDEA 增加 Maven 原型模板
点击 New Project 而后抉择 Maven,勾选Create from archetype 点击 Add Archetype 弹出对话框:
而后模板就被增加到模板列表了,选中增加的模板点击 下一步 就能够应用了。
命令行
就像应用本地原型创立我的项目一样,这里给你一套命令执行就能够了:
mvn archetype:generate \
-DgroupId=cn.felord.demo \
-DartifactId=demo-project \
-Dversion=1.0.0 \
-Dpackage=cn.felord.demo \
-DarchetypeGroupId=cn.felord \
-DarchetypeArtifactId=template-archetype \
-DarchetypeVersion=1.0 \
-DinteractiveMode=false
如果你想通过交互命令生成,就把前三个选项和最初一个
DinteractiveMode
去掉试试。
不要忘了把上面的近程仓库配置到setting.xml
;
<repository>
<id>archetype</id>
<!-- 仓库地址 -->
<url>https://repository.domain.com/path/to/repo/</url>
</repository>
<!-- 仓库的认证信息 -->
<server>
<id>archetype</id>
<username>repousername</username>
<password>xxx.felord.cn</password>
</server>
我的项目模版生成在我的项目研发中很重要,能够让咱们的我的项目能放弃一致性,也不便后续转微服务或者保护降级。
关注公众号:Felordcn 获取更多资讯
集体博客:https://felord.cn