首页 > 运维 > linux运维 > 正文

Maven Archetype 多 Module 自定义代码脚手架

蓮花仙者
发布: 2025-07-20 12:32:10
原创
880人浏览过

大多数公司都有一个通用的模板项目,帮助你快速创建一个新项目。这种项目通常需要集成一些公司内部的中间件、单元测试、标准的代码格式和通用的代码分层等。

今天,我们将利用 Maven 的 Archetype 插件来简化这一过程。

Maven Archetype 多 Module 自定义代码脚手架从上图可以清楚地看到,利用这个插件机制只需几个简单的步骤:

  1. archetype:create-from-project:根据自己的项目代码生成原型项目。
  2. 通过 install 等命令生成原型文件。
  3. archetype:generate:通过原型生成目标项目。

看起来很简单,但如果你按照网上找到的资料操作,你会发现生成的项目可能不够理想,甚至包括官方文档也无法完全解决问题。步骤似乎很简单,但实际上会遇到许多问题,比如 module 名称不会变化、包名改变后代码中未更新,依赖报错等。

接下来,我们详细说明如何创建和使用 Archetype。

创建 Archetype

首先,准备好我们自己的模板项目,确保代码都是正确的。

进入项目根目录,执行以下命令:

mvn archetype:create-from-project
登录后复制

执行后,项目根目录下会生成 target 文件夹。这个步骤很简单,不会有任何障碍。请注意每个模块的名字,我已经对其进行了修改。

Maven Archetype 多 Module 自定义代码脚手架这里最关键的部分是如何修改 target/generated-sources/src/main/resources/archetype-resources 下的文件。

如果不进行修改,直接继续的话,最终生成的项目会发现 module 的名称不会变化,包名也不会更新,代码中引用的依赖会出现大量错误。

接下来,我们看看如何修改这些问题。

修改父 pom

首先,找到根目录的 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 也要修改,groupIdartifactId 按照以下方式修改,不要写死:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${groupId}</groupId>
            <artifactId>${rootArtifactId}-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        ... ...
    </dependencies>
</dependencyManagement>
登录后复制

修改 module

默认生成的 module 可能还是模板项目的名字,需要修改成类似 __rootArtifactId__-client 的形式,注意是双下划线。

代码小浣熊
代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51
查看详情 代码小浣熊

然后,module 中的互相引用 groupIdartifactId 按照父 pom 的方式对应修改。

修改 archetype-metadata

找到 META-INF/maven/archetype-metadata.xml 文件,修改 modules 相关的部分,重点注意 iddirname 的修改方式:

<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 已经创建完成。最大的挑战在于前面的修改步骤,花费了大量时间。

接下来,我们看看如何使用 Archetype,有两种使用方式。

命令行使用

随便进入你想保存项目的路径,执行以下命令:

mvn archetype:generate -DarchetypeCatalog=local
登录后复制

依次按照提示输入 groupIdartifactId 即可完成创建。

让其他人使用

你的本地 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 中使用

在 IDEA 中新建项目,选择 Maven,勾选 "Create from archetype",然后选择 "Add Archetype..."。

Maven Archetype 多 Module 自定义代码脚手架接着,输入我们自定义的 Archetype 的 GroupIdArtifactIdVersion 信息。

添加成功后,你就可以在列表中看到我们自己的 archetype,然后按照流程创建即可。

以上就是Maven Archetype 多 Module 自定义代码脚手架的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号