git - 在本地开发期间将特定的 Maven 依赖项设置为最新版本
问题描述
鉴于我的多模块 CI 具有以下依赖项:
<groupId>my_group</groupId>
<artifactId>artifact1</artifactId>
<version>2.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>my_group</groupId>
<artifactId>artifact2</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
在我的 CI 上,我想编译工件 2。但是,在我的开发中,我很少接触它,因为编译该工件需要一些外部依赖项和大量时间,我非常想跳过它并使用任何最新版本。
到目前为止,我有一个使用 RELEASE 覆盖 artifact2 版本的配置文件,例如:use-released-artifact2 my_group artifact2 RELEASE
在本地,我将使用 -Puse-released-artifact2 运行。伟大的。
现在 maven3 弃用了 RELEASE 和 LATEST 伪版本,我正在尝试找到一个解决方案:
- 不会留下修改后的 pom.xml 文件被 git 识别为“已修改”。过去导致开发人员无意中提交了错误的文件。出于同样的原因,我不能只在这个文件中添加忽略。
- 不需要开发人员遵循发布时间表并在他们的“mvn clean install...”行中替换参数。
- 不会像版本范围那样经过冗长的解析。
- 不会强迫我在每个版本上提交一个版本(除了版本插件不支持升级到版本“next-1”afaik)。
有任何想法吗?
澄清:
我根本不想运行 artifcat2 build 。此外,artifact2 在存储库中的 2.0.0-SNAPSHOT 中不可用,因为它尚未发布。我真的很想从存储库中获取最新版本(例如 1.5.7)来针对它编译 artifact1。
解决方案
我的建议如下。
- 查看整个多模块项目。
- 一次构建所有模块。
- 然后,使用一个标志(如此处所述)仅为每个后续构建构建 artifact1。
所以第一次构建需要一些时间,但之后您只需要构建 artifact1 并且 artifact2 的 SNAPSHOT 将在您的本地存储库中随时可用。
当然,通过这种方法,您使用的是最新版本的 artifact2,而不是最新的发布版本,但实际上,这并不重要。
推荐阅读
- sql - 将 XML 解析为 Oracle SQL
- histogram - Circlize plot - 具有相同 Y 轴的直方图
- python - dash_table 显示空白行
- json - 颠簸转换 - 小写所有键?
- java - 检测白色像素密度低的区域
- javascript - 如何找出从Javascript中的某个文件调用的函数
- ajax - Angular/RxJS - 只调用一次 AJAX 请求,否则发出 Observable 的当前值
- ruby - 在Ruby中对每个键中的值进行排序
- shell - 如何在没有 Node.js 的命令行上使用 npm 工具?
- maven - React Native Maps 依赖问题