maven中自定义MavenArchetype的实现
作者:只年
Maven自身提供了许多Archetype来方便用户创建Project,但是每个团队都可能会有一些常用的文件或配置,为了避免在创建project时重复的拷贝和修改,我们通过自定义Archetype来规范显得还蛮有必要,下面简单介绍下使用maven-archetype-archetype来构建自己的Archetype的过程。
1、创建项目
示例
mvn archetype:generate \ -DgroupId=com.zn.opit.template \ -DartifactId=zn-springboot-template \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DinteractiveMode=false
- groupId: 项目的包名,通常是公司或组织的反向域名。
- artifactId: 项目的名称,代表项目在 Maven 中的标识。
- archetypeArtifactId: 我们使用 maven-archetype-quickstart 来创建一个简单的 Maven 项目。
创建完成后,你将有一个基本的 Maven 项目目录结构。
2、编写你的项目结构和代码
将Java文件和目录保持你项目的标准结构。这样,你已经完成了原型项目的编写。
3、转换为 Maven Archetype
现在你需要将该项目转换为 Maven Archetype。首先,你需要确保项目编译无误:
mvn clean install
之后,使用以下命令将现有项目打包为 Archetype:
mvn archetype:create-from-project
此命令将项目转换为 Archetype,并在 target/generated-sources/archetype 目录中生成 Archetype 的源码。
4、安装 Archetype 到本地仓库
将生成的 Archetype 安装到本地仓库中:
cd target/generated-sources/archetype mvn clean install
这将把 Archetype 安装到你的本地 Maven 仓库,通常位于 ~/.m2/repository。
5、使用生成的 Archetype 创建新项目
现在,你已经有了一个本地安装的 Archetype,可以使用它来生成新项目。
首先,列出本地可用的 Archetype:
mvn archetype:generate
在这个列表中,查找你刚刚创建的 chaos-template。你应该能够找到它。
6、确认生成的项目是否正确
- 打开你生成的新项目,检查文件结构是否和你原始项目一致。
- 运行项目,确认代码没有问题。
7、在 IDE 中使用本地 Archetype
在 New Project 中,你应该能够选择 “Maven Archetype”,并在本地 Archetype 列表中看到 zn-springboot-tpl。
详细说明:
- Archetype 是什么: Maven Archetype 是一个项目模板,可以用来快速生成带有特定结构和内容的项目。我们将上述代码作为模板,以便可以反复使用。
- ${package} 的作用: 在 Archetype 中,你可以使用 ${package} 这种变量,它会在生成项目时自动替换为实际的包名。这让 Archetype 更加灵活。
- 安装到本地仓库的目的是: 通过将 Archetype 安装到本地仓库,你可以在没有远程仓库的情况下,通过 IDE 或 Maven 使用本地模板来生成项目。
通过这些步骤,你将成功构建一个 Maven Archetype,并使用它来生成基于你代码模板的新项目。
FAQ
?org.apache.maven.archetype.source.ArchetypeDataSourceException: org.eclipse.aether.transfer.MetadataNotFoundException: Failure to find /archetype-catalog.xml in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced
这个错误是由于 Maven 在尝试从远程仓库中下载 Archetype catalog 时失败,尤其是在访问阿里云的 Maven 仓库时,无法找到 archetype-catalog.xml 文件。它最终会回退到使用本地或内部的 Archetype catalog。
你可以通过以下几种方式解决这个问题:
检查你的 Maven 的 settings.xml 配置文件,确保配置的远程仓库可用。你可以在 ~/.m2/settings.xml 中配置阿里云的镜像,但如果它不可用,可能需要更新或切换到其他可用的公共仓库。
在 settings.xml 中,检查是否有类似的配置:
<mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
尝试将这个 mirror 替换为更稳定的仓库,比如 Maven Central:
<mirrors> <mirror> <id>maven-default-mirror</id> <mirrorOf>central</mirrorOf> <name>Maven Central</name> <url>https://repo.maven.apache.org/maven2/</url> </mirror> </mirrors>
保存并重试命令。
- 强制更新仓库
由于该错误提到缓存可能导致不能自动重新下载文件,你可以使用 -U 选项来强制更新 Maven 仓库中的缓存:
mvn archetype:generate -U
- 手动下载 Archetype catalog
如果远程仓库的问题持续,另一种解决办法是手动下载 archetype-catalog.xml 文件并将其放入本地仓库。你可以从其他 Maven 仓库或官方网站找到这个文件,然后放置在本地仓库合适的位置。
- 使用本地 Archetype
由于你已经创建并安装了 Archetype 在本地仓库,可以通过以下命令使用本地的 Archetype 来生成项目:
mvn archetype:generate \ -DarchetypeCatalog=local \ -DarchetypeGroupId=com.zn.opit.chaos \ -DarchetypeArtifactId=chaos-template \ -DarchetypeVersion=1.0-SNAPSHOT \ -DgroupId=com.example \ -DartifactId=my-new-project
不用上述命令,此时已经可以执行install命令成功。
?在idea的New Project页面选择Archetype时并没有自己制作的那个
mvn clean install # 生成本地 archetype-catalog.xml # 当你在本地创建了 Archetype 后,Maven 需要生成一个 archetype-catalog.xml 文件,以便 IDE 能够识别本地的 Archetype。 # 使用以下命令生成本地的 Archetype 目录: mvn archetype:crawl # 该命令会在 ~/.m2/repository 目录下生成一个 archetype-catalog.xml 文件,该文件会包含所有本地安装的 Archetype 信息。 # 你可以在命令行中检查是否生成了此文件,通常路径是: ~/.m2/repository/archetype-catalog.xml
此时还没有,可以在 New Project → Catalog → Manage catalogs → 新增一个路径(name自定义、type是Local、location选择archetype-catalog.xml的路径,例如: /Users/zhinian/.m2/repository/archetype-catalog.xml)
。此时New Project,Catalog选择zhinian-tpl,下方已经有可选项了
到此这篇关于maven中自定义MavenArchetype的实现的文章就介绍到这了,更多相关自定义MavenArchetype内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!