java - Maven 在构建我们自己的 custom.jar 时发布和使用第三方运行时 jar

标签 java maven dependency-injection dependencies dependency-management

我有一个 Maven 项目,我们正在为其加载内部 abc-1.0.jar使用 S3 存储库以及 abc-1.0.jar 所需的任何运行时依赖项作为我项目的一部分,我们以 .zip 的形式加载并将其提取为
趣闻:当我将第三方运行时 jar 称为 zip 时,有些 jar 在构建时可能没有使用 abc-1.0.jar

project.zip
 -- lib
    -- abc-1.0.jar
    -- runtime_jars_for_abc.jar
    -- runtime_jars_for_project.jar
交货时有可能 abc-1.0.jar jar 到 my-project运行时 zip 可能有 one set of jars但对于 abc-2.0.jar我需要发货 another set of jars .
我已经通过以 zip 的形式传送它并在创建 project.zip 时解压它来解决这个问题。
但是,我可以发货或宣布那些runtime.jar吗?连同我的 abc-1.0.jarabc-2.0.jar以便 my-project/pom.xml可以从 mavenCentral() 即时使用该公告或者我的内部maven-repo ?
编辑
我找到了 maven changes plugin这里https://maven.apache.org/plugins/maven-changes-plugin/ .这主要是要发布新的更改,但是如何为每个新构建动态使用新更改?有什么想法吗? 🤔
*我在想的是推abc-1.0.jar连同它的 abc-1.0-pom.xml文件应该包含一些自定义范围或依赖 jar 的逻辑分组,以便我可以指定那些 custom scopesgroups在消费项目中使用 maven copy dependencies plugin 唯一地复制这些 jar https://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-project-dependencies.html但不幸的是 maven 不支持 custom scopes 😞

最佳答案

在您的项目-b 中,为您的版本添加前缀 -快照 , 像这样

<groupId>my.groupid</groupId>
<artifactId>my.artifactid</artifactId>
<version>0.0.1-SNAPSHOT</version>
因此,每次当您在 project-b 中进行更新时,您的 project-a 都会从 Maven 存储库中选择最新的快照
如您所见,maven 通过添加时间戳来组织快照以交付最新发布
enter image description here
请注意,您的项目-a 绝不能进入具有快照依赖项的验收、pprod 或生产环境!

关于java - Maven 在构建我们自己的 custom.jar 时发布和使用第三方运行时 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63966224/

相关文章:

javascript - 如何使用 Angular 8 中的注入(inject)器注入(inject)使用注入(inject) token 的服务

c# - 如何验证 ASP.NET Core 中的 DI 容器?

android - Dagger 2 注入(inject) Android 应用程序上下文

java - Microsoft Azure Cosmos DocumentDB 最佳读取查询性能

java - 如何在 Spring MVC 中使用内容类型 ModelAndView

java - 当包含 "-"时,Maven 无法识别参数

java - 为什么 Maven 选择版本 1.0.b2 而不是 1.3.03

java - 仅从 pom 文件中检索依赖项

java - 如何使用 Java 对 URL 进行编码

java - 发现映射属性不明确的映射方法(java.util.Map 和 java.util.Object)