一、需要自定义骨架的需求

有的时候,我们项目中会有很多公共的依赖、公共的代码、公共的配置文件
但是我们又不希望创建一个新项目之后重新从老项目拷贝。所以我们能使用老的项目作为新建项目的maven archetype骨架。

如何自定义骨架

首先创建一个maven项目,这个项目是作为archetype骨架的项目

要想生成骨架,我们的maven要加一个插件pom.xml的build节点下加入以下代码

        <plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>2.2</version></plugin></plugins><extensions><extension><groupId>org.apache.maven.archetype</groupId><artifactId>archetype-packaging</artifactId><version>3.0.1</version></extension></extensions>

二、构建archetype

在项目pom.xml同级的目录下运行以下命令

mvn clean archetype:create-from-project

注意:一定要clean,不然使用骨架会把骨架的java项目结构也加到新项目中

看到build success后我们会发现生成了target文件夹,结构如下:

target目录下会有generated-sources目录,generated-sources/archetype/src/main.resource/META_INF.maven下会有一个archetype-metadata.xml文件,这里是可以配置那些资源会被包含在骨架中,那些不会包含在骨架中。

三、安装骨架到本地仓库

到generated-sources/archetype 目录下安装骨架到本地

cd target/generated-sources/archetype/
mvn clean install

构建成功后会输出一下信息:

[INFO] Installing E:\SpringIO\achetype-test\target\generated-sources\archetype\pom.xml to E:\MavenRepository\org\example\achetype-test-archetype\1.0-SNAPSHOT\achetype-test-archetype-1.0-SNAPSHOT.pom

在本地按照路径找到achetype-test-archetype-1.0-SNAPSHOT.pom 打开,看看里面的信息:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>achetype-test-archetype</artifactId><version>1.0-SNAPSHOT</version><packaging>maven-archetype</packaging><name>achetype-test-archetype</name><build><extensions><extension><groupId>org.apache.maven.archetype</groupId><artifactId>archetype-packaging</artifactId><version>2.2</version></extension></extensions><pluginManagement><plugins><plugin><artifactId>maven-archetype-plugin</artifactId><version>2.2</version></plugin></plugins></pluginManagement></build>
</project>

里面标识了jar包的类型是maven-archetype

四、在本地仓库生成坐标信息

执行一下命令:

mvn archetype:crawl

在指定的Maven库中查找可以的模板,并更新模板目录,这个时候在本地的maven仓库中就会生成一个archetype-catalog.xml文件,里面有固件的坐标信息。
打开:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog 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"xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><archetypes><archetype><groupId>org.example</groupId><artifactId>achetype-test-archetype</artifactId><version>1.0-SNAPSHOT</version><description>achetype-test</description></archetype></archetypes>
</archetype-catalog>

五、根据模板坐标信息创建新项目

首先创建maven项目

然后把骨架的坐标信息输入

输入的坐标信息是archetype-catalog.xml里achetype-test-archetype骨架的坐标信息,输入完确认之后下面的archetype面板会出现以下骨架:这个信息会缓存在:
C:\Users/[用户]\AppData\Local\JetBrains\IntelliJIdea2020.x.x\Maven\Indices/UserArchetypes.xml下
如果想要清楚,打开,把你添加的骨架坐标信息删掉再清楚IDEA缓存重启就好

选择然后下一步,输入完项目的groupId和artifactId之后项目就创建成功了
创建的项目会有骨架项目的java代码、依赖配置、以及资源文件

六、上传骨架到nexus

在项目target/generated-sources/archetype/pom.xml 中加入以下配置,指定nexus地址。

<distributionManagement><repository><id>nexus-releases</id><name>Micaicms Releases</name><url>http://localhost:8081/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>nexus-snapshots</id><name>Micaicms Releases</name><url>http://localhost:8081/nexus/content/repositories/snapshots/</url></snapshotRepository>
</distributionManagement>

然后在target/generated-sources/archetype运行

mvn deploy

这样就能把骨架上传到nexus仓库中了(这个nexus只是笔者自己搭建的本地nexus服务)
注意:上传nexus私服需要密码。

七、使用远程nexus仓库的archetype创建项目

使用远程nexus仓库的archetype创建项目的时候,必须在自己的maven conf 下settings.xml加入以下配置:

因为Maven 3改变了原型存储库的集成方式。该-DarchetypeRepository参数不再存在。相反,需要将archteype存储库添加到settings.xml

<profile><!-- the profile id is arbitrary 这个id是任意填的--> <id>my_archetype</id><repositories><repository><!-- the repository id has to be named: archetype 这repository Id必须是archetype --><id>archetype</id><name>my archetypes</name><url>http://127.0.0.1:8081/repository/maven-public/</url><releases><enabled>true</enabled><checksumPolicy>fail</checksumPolicy></releases><snapshots><enabled>true</enabled><checksumPolicy>warn</checksumPolicy></snapshots></repository></repositories></profile><activeProfiles><activeProfile>my_archetype</activeProfile> <!-- 这个id是上面的profile id --></activeProfiles>

注意:以上配置一定要加!以上配置一定要加!!以上配置一定要加!!!上面的配置是为了告诉maven archetype可以从哪里拿,如果没有上面的配置,使用远程nexus 的archetype的时候会报The desired archetype does not exist

自定义maven archetype,上传到nexus,并使用nexus远程的archetype创建项目相关推荐

  1. Vue自定义组件npm上传私服,且从私服下载使用

    Vue自定义组件npm上传私服,yarn私服下载使用 安装镜像源管理工具nrm 发布自定义组件到公司私服 若未下载nrm源管理工具直接使用npm设置私服地址也可以 以下步骤都是基于npm命令 从私服下 ...

  2. maven deploy上传文件到私服 神坑解决

    maven deploy上传文件到私服 神坑解决 命令行使用命令 mvn deploy:deploy-file -DgroupId=com.sf -DartifactId=express -Dvers ...

  3. maven 文件上传下载_使用Maven将文件上传和下载到S3

    maven 文件上传下载 多年来,我已经看到许多团队以许多不同的方式使用Maven. Maven可用于许多ci / cd任务,而无需使用额外的管道代码,或者可用于在运行某些测试之前准备开发环境. 通常 ...

  4. maven私服上传jar包

    maven私服上传jar包 登录maven私服 上传jar 登录maven私服 点击Repositories,选择上传到的仓库 3rd party 上传jar 选择Artifact Upload 选择 ...

  5. 关于V5.7 正式版 自定义字段图片上传无法点击选择的问题解决!

    官方说官方的版本已经更改了,坐等下次更新,我不知道官方会在什么时候更新,在没更新期间那用户怎么办,因此,我花了近一个上午来找这个问题的解决办法 再来看一下打开浏览按纽后对话框的上面的地址 V57上面是 ...

  6. wangeditor自定义图片视频上传

    wangeditor自定义图片视频上传 完整代码 <template><div style="border: 1px solid #ccc;height: 100%;&qu ...

  7. vue自定义组件-文件上传后端接口

    学习目标: vue自定义组件-文件上传后端接口 学习内容: 准备工作: 后端环境:JAVA-Springboot项目数据库表(这里使用psql数据库):sys_file_record保存上传文件的信息 ...

  8. 码云上传代码添加标签_[Android] 发布码云(Gitee)项目到JitPack(最全完整流程)

    最近把github上的代码都转移到了码云上,而且github上的仓库可以很方便的迁移到码云,所以老代码的迁移问题不用考虑. 之前使用 JCenter 发布了一个 GitHub 开源项目,JCenter ...

  9. 图片上传(加水印、缩略图、远程保存)的简单例子

    图片上传(加水印.缩略图.远程保存)的简单例子(应用于51aspx.com) 该源码下载地址:http://51aspx.com/CV/ImageUpload 今天看到xiongeee发的文章使用使用 ...

最新文章

  1. 样本不均衡常见解决方法
  2. asp创建mysql表_asp创建数据库表
  3. 3D网页游戏场景打包与加载
  4. Ubuntu 16.04下Caffe-SSD的应用(一)——编译Caffe-SSD的CPU版本与GPU版本
  5. java-第七章-数组-循环输出
  6. python 处理 excel格式文件
  7. 专访厦门第二医院影像科主任郭岗:基于 IBM 推出的 AI 集成解决方案,如何给医生减负增效?...
  8. Mock server的实现 - run Fiori application using mock data in offline mode
  9. kotlin数据库_如何在Kotlin应用程序中使用Xodus数据库
  10. WebAPI性能监控-MiniProfiler与Swagger集成
  11. React taro 微信小程序上传文件 多个文件上传
  12. python列表后面两个括号_python列表[]中括号
  13. 大道至简之八:透过现象看本质(房价推手)
  14. 自动写字成图5款有趣实用的AIGC工具分享
  15. 刚刚!中国最有前途的30座城市排名公布
  16. [效率提升]webstorm配置Prettier:代码自动格式,格式化时清除空行,修改使用代码模板
  17. 数控加工仿真系统的使用介绍(上)
  18. .NET开源工作流RoadFlow-表单设计-隐藏域
  19. 量化交易领域主流的框架以及实用工具汇总
  20. 语义分割 - 基于 CNN 的交互式视频分割

热门文章

  1. Numpy计算二维、三维、多维向量空间夹角余弦值
  2. java word表格_Java 在Word中添加表格
  3. 数据结构与算法书籍推荐(7本)
  4. amd锐龙笔记本cpu怎么样_锐龙笔记本性能怎么样?看完这期评测你就懂了
  5. Linux好书、经典书籍推荐
  6. Python学习demo01 创建牌->洗牌->发牌->整理牌
  7. Python性能分析技巧
  8. Skycc营销软件,让我成了“宝马男”
  9. GMS-VBA工程不可查看-破解方法
  10. python悬浮球窗口_实现悬浮窗口