本文来自于【阿里云官方镜像站: 】
原文链接:
Archetype是一个Maven项目模板工具包。原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的。当我们试图提供一个提供生成Maven项目的一致方法的系统时,这个名字就合适了。Archetype将帮助作者为用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法。
使用原型提供了一种很好的方法,可以与您的项目或组织所采用的最佳实践一致的方式快速地使开发人员受益。您可能希望在组织内部实现J2EE开发的标准化,因此您可能希望提供EJB,WAR或Web服务的原型。一旦创建了这些原型并将其部署在组织的存储库中,组织中的所有开发人员就可以使用它们。
我们将使用springboot项目来演示如何生成一个maven archetype(原型),本文中(模板)(原型)交替使用,二者意思相同。
我们有一个现成的示例项目,其结构如下:
接下来我们将使用maven archetype来创建以该项目为基础的模板。
执行以下maven命令:
此时项目中会生成
target/generated-sources/archetype文件夹,其中存放的就是我们的模板相关文件。
探索
target/generated-sources/archetype我们可以得知:
我们随机打开一个archetype-resources中的源文件,可以看到如下:
上图中我们看到的${package}占位符,这个就是maven原型插件自动处理的结果,到时候我们根据原型生成项目的时候,这些占位符就会变成我们新生成项目的相关的值。类似,maven还提供了
groupId,artifactId, version等关键字。如果我们项目中有其他地方也需要这种定制化,我们可以手动进行更改。
例如我们把项目配置文件改为如下(应用名用占位符代替),目的是实现项目的名称随新建的项目变动。
接下来来分析
archetype-metadata.xml,他是原型描述符号,我们可以指定那些文件进入原型里,那些文件需要排除,还能指定上面说的占位符需不需要被替换 等等。
如下为
archetype-metadata.xml示例:
说明:
fileSet 属性标签指定的那些文件需要纳入原型中,我们把不需要的删掉。
filtered 属性标签表示是否替换文件中的占位符,若为true则会替换,否则不会,所以我们如果想要占位符最后会被替换为项目相关的信息,还需要通过这个标签指定。
packaged 属性标签指定文件是否在项目的包里面,true或false。
我们进入
target/generated-sources/archetype目录,执行以下命令:
此时模板将在我们本地生成。
我们使用以下命令:
之后,我们会生成新项目。项目的结构符合我们的原型结构。查看我们手动指定的
application.yml
此时,可以看到我们的占位符已经被我们项目的相关信息给替换了。
我们进入
target/generated-sources/archetype目录,打开
pom.xml
添加仓库信息:
然后指定如下命令:
随后,原型将被上传至你的mavne仓库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70011781/viewspace-2849245/ ,如需转载,请注明出处,否则将追究法律责任。