1. 场景描述
(1) 随着微服务越来越常见, 一个大的项目会被拆分成多个小的微服务, jar 包以及 jar 之间的版本冲突问题, 变得越来越常见, 如何保持整体微服务群 jar 及版本统一, 也变成更加重要了, maven 的自定义 archetype(模板 / 骨架 / 脚手架) 很好的解决了这个问题, 在新建微服务项目的时候, 使用统一的 archetype 创建项目, 可以提高开发效率与避免不必要的项目 jar 包冲突.
(2) 自定义 archetype(模板 / 骨架 / 脚手架) 主要有两个作用, 一是针对本人, 后续开发使用已经验证过的项目配置, 可以提高开发效率与避免不必要的问题; 二是针对项目成员或公司同事, 大家使用统一的 archetype, 可以有效避免 jar 及版本冲突.
2. 解决方案
2.1 pom 文件新增插件信息
首先在将作为 archetype 的项目的 pom 文件中添加插件配置信息:
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-archetype-plugin</artifactId>
- <version>3.0.0</version>
- </plugin>
如下图:
2.2 生成自定义 archetype 项目信息
点击 mvn 命令按钮, 执行下面命令
mvn archetype:create-from-project
如下图:
2.3 查看及编译 archetype 项目信息
执行完成后, console 中会有提示, 项目文件生成在 target 下面.
文件可以直接修改, 这时候可以修改 pom 文件或者 java 类, 比如在 pom 文件中新增 maven 仓库信息.
- <distributionManagement>
- <repository>
- <id>
- releases
- </id>
- <url>
- http://192.168.0.11:8888/nexus/content/repositories/releases
- </url>
- </repository>
- <snapshotRepository>
- <id>
- snapshots
- </id>
- <url>
- http://192.168.0.11:8888/nexus/content/repositories/snapshots
- </url>
- </snapshotRepository>
- </distributionManagement>
如下图:
2.4 打包 (jar/war)
(1) 路径是刚才生成的 archetype 路径:
E:\tool\workspace\spcrud\target\generated-sources\archetype
(2) 执行 maven 命令是:
mvn clean install
(3) 效果图
说明: jar 包会打包到本地仓库中
- [INFO] --- maven-install-plugin:3.0.0-M1:install (default-install) @ spcrud-archetype ---
- [INFO] Installing E:\tool\workspace\spcrud\target\generated-sources\archetype\target\spcrud-archetype-0.0.1-SNAPSHOT.jar to E:\m2\repository\com\laowang\spcrud-archetype\0.0.1-SNAPSHOT\spcrud-archetype-0.0.1-SNAPSHOT.jar
- [INFO] Installing E:\tool\workspace\spcrud\target\generated-sources\archetype\pom.xml to E:\m2\repository\com\laowang\spcrud-archetype\0.0.1-SNAPSHOT\spcrud-archetype-0.0.1-SNAPSHOT.pom
2.5 使用 archetype 创建工程
说明:
(1) 新建工程, 选择从 archetype 中创建工程, 录入 gav 定位 jar 包, 这个 gav 可以在本地 maven 仓库自定义 archetype 的 xml 中看到 (刚才打包的时候也有).
(2) 这个是从本地仓库获取的 jar 包创建的, 团队成员或者公司人员使用的话, 需要把对应的 jar 包上传到 maven 私服库中即可, 其他流程不变.
I'm 「软件老王」, 如果觉得还可以的话, 关注下呗, 后续更新秒知! 欢迎讨论区, 同名公众号留言交流!
来源: https://www.cnblogs.com/ruanjianlaowang/p/11506085.html