maven中自定义MavenArchetype的实现

 更新时间:2025年01月03日 09:30:27   作者:只年  
Maven自身提供了许多Archetype来方便用户创建Project,为了避免在创建project时重复的拷贝和修改,我们通过自定义Archetype来规范显得还蛮有必要,下面就来介绍一下,感兴趣的可以了解一下

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • SpringBoot集成P6spy实现自定义SQL日志打印

    SpringBoot集成P6spy实现自定义SQL日志打印

    本文主要介绍了SpringBoot集成P6spy实现自定义SQL日志打印,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • SpringSecurity配置HTTPS的实现

    SpringSecurity配置HTTPS的实现

    本文介绍了SpringBoot项目中配置HTTPS并集成SpringSecurity,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 工厂模式_动力节点Java学院整理

    工厂模式_动力节点Java学院整理

    这篇文章主要介绍了工厂模式_动力节点Java学院整理的相关资料,需要的朋友可以参考下
    2017-08-08
  • JS+Struts2多文件上传实例详解

    JS+Struts2多文件上传实例详解

    这篇文章主要为大家详细介绍了JS+Struts2多文件上传实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Java反射 PropertyDescriptor类案例详解

    Java反射 PropertyDescriptor类案例详解

    这篇文章主要介绍了Java反射 PropertyDescriptor类案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • java基本事件处理机制解析

    java基本事件处理机制解析

    这篇文章主要介绍了java基本事件处理机制解析, Java事件处理机制是一种用于处理用户交互和系统事件的编程模型,它基于事件驱动的思想,通过监听和响应事件来实现程序的交互性和动态性,需要的朋友可以参考下
    2023-10-10
  • SpringBoot使用thymeleaf模板过程解析

    SpringBoot使用thymeleaf模板过程解析

    这篇文章主要介绍了SpringBoot使用thymeleaf模板过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • springboot themaleaf 第一次进页面不加载css的问题

    springboot themaleaf 第一次进页面不加载css的问题

    这篇文章主要介绍了springboot themaleaf 第一次进页面不加载css的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 一个Java中BigDecimal的问题记录

    一个Java中BigDecimal的问题记录

    这篇文章主要给大家介绍了关于Java中一个BigDecimal问题的相关资料,通过文中介绍的方法可以很方便的解决BigDecimal进行计算的时候不管怎么计算,最后得到的值都没有变化的问题,需要的朋友可以参考下
    2021-11-11
  • Maven中利用assembly插件打包jar包

    Maven中利用assembly插件打包jar包

    本文详细讲解了Maven中利用assembly插件打包jar包的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论