大多数公司都有一个通用的模板项目,帮助你快速创建一个新项目。这种项目通常需要集成一些公司内部的中间件、单元测试、标准的代码格式和通用的代码分层等。
今天,我们将利用 Maven 的 Archetype 插件来简化这一过程。
从上图可以清楚地看到,利用这个插件机制只需几个简单的步骤:
archetype:create-from-project:根据自己的项目代码生成原型项目。install 等命令生成原型文件。archetype:generate:通过原型生成目标项目。看起来很简单,但如果你按照网上找到的资料操作,你会发现生成的项目可能不够理想,甚至包括官方文档也无法完全解决问题。步骤似乎很简单,但实际上会遇到许多问题,比如 module 名称不会变化、包名改变后代码中未更新,依赖报错等。
接下来,我们详细说明如何创建和使用 Archetype。
首先,准备好我们自己的模板项目,确保代码都是正确的。
进入项目根目录,执行以下命令:
mvn archetype:create-from-project
执行后,项目根目录下会生成 target 文件夹。这个步骤很简单,不会有任何障碍。请注意每个模块的名字,我已经对其进行了修改。
这里最关键的部分是如何修改 target/generated-sources/src/main/resources/archetype-resources 下的文件。
如果不进行修改,直接继续的话,最终生成的项目会发现 module 的名称不会变化,包名也不会更新,代码中引用的依赖会出现大量错误。
接下来,我们看看如何修改这些问题。
首先,找到根目录的 pom 文件,会发现缺少 module 信息,必须添加以下内容:
<modules>
<module>${rootArtifactId}-client</module>
<module>${rootArtifactId}-common</module>
<module>${rootArtifactId}-service</module>
<module>${rootArtifactId}-facade</module>
<module>${rootArtifactId}-starter</module>
</modules>父 pom 中引用的每个 module 也要修改,groupId 和 artifactId 按照以下方式修改,不要写死:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-client</artifactId>
<version>${project.version}</version>
</dependency>
... ...
</dependencies>
</dependencyManagement>默认生成的 module 可能还是模板项目的名字,需要修改成类似 __rootArtifactId__-client 的形式,注意是双下划线。
然后,module 中的互相引用 groupId 和 artifactId 按照父 pom 的方式对应修改。
找到 META-INF/maven/archetype-metadata.xml 文件,修改 modules 相关的部分,重点注意 id、dir、name 的修改方式:
<modules>
<module dir="__rootArtifactId__-client" id="${rootArtifactId}-client" name="${rootArtifactId}-client">
<fileSets>
<fileSet encoding="UTF-8" filtered="true" packaged="true">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
</fileSets>
</module>
... ...
</modules>修改完成后,进入 target/generated-sources/archetype 目录,执行以下命令:
mvn install
顺便执行 mvn deploy 上传到 Nexus。
经过上述步骤,原型 Archetype 已经创建完成。最大的挑战在于前面的修改步骤,花费了大量时间。
接下来,我们看看如何使用 Archetype,有两种使用方式。
随便进入你想保存项目的路径,执行以下命令:
mvn archetype:generate -DarchetypeCatalog=local
依次按照提示输入 groupId、artifactId 即可完成创建。
你的本地 Maven 仓库目录(比如 ~/.m2/repository)有一个文件 archetype-catalog.xml,共享给其他人即可。
<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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">
<archetypes>
<archetype>
<groupId>com.example</groupId>
<artifactId>template-archetype</artifactId>
<version>1.0.0-SNAPSHOT</version>
<description>Example Project</description>
</archetype>
</archetypes>
</archetype-catalog>在 IDEA 中新建项目,选择 Maven,勾选 "Create from archetype",然后选择 "Add Archetype..."。
接着,输入我们自定义的 Archetype 的 GroupId、ArtifactId、Version 信息。
添加成功后,你就可以在列表中看到我们自己的 archetype,然后按照流程创建即可。
以上就是Maven Archetype 多 Module 自定义代码脚手架的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号