java - 如何在 Maven 管理的框架中修补子组件?

标签 java maven-2 jar nexus mule

我需要为这个错误(http://www.mulesoft.org/jira/browse/MULE-3983)修补 mule 的 mule-transport-jms 子组件。 “修复”很简单,但让我烦恼的是将修补后的组件部署到我的本地 maven 存储库(由 Nexus 管理)并让它继续与 mule 的所有其他组件一起很好地运行。

我想要的是将我新修补的 mule-transport-jms 标记为版本号 2.2.1-patched,并让我的 esb 组件依赖于它以及其他 mule 组件(例如 mule-core),它们仍然是设置为 2.2.1 版。因为 mule-transport-jms pom 读取(部分)是这样的:

<parent>
    <groupId>org.mule.transports</groupId>
    <artifactId>mule-transports</artifactId>
    <version>2.2.1</version>
</parent>
<artifactId>mule-transport-jms</artifactId>
<packaging>bundle</packaging>
<name>JMS Transport</name>
<description>A Mule transport for Jms Connectivity.</description>

有许多依赖于版本 2.2.1 的相互依赖关系。将父版本(如上所示)更改为 2.2.1-patched 会破坏所有内容,添加一个版本标签,使其看起来像这样:

<parent>
    <groupId>org.mule.transports</groupId>
    <artifactId>mule-transports</artifactId>
    <version>2.2.1</version>
</parent>
<artifactId>mule-transport-jms</artifactId>
<version>2.2.1-patched</version>
<packaging>bundle</packaging>
<name>JMS Transport (ZFP patched)</name>
<description>A Mule transport for Jms Connectivity.</description>

破坏了一些可能在父级 pom 中声明的依赖项(在这个项目的任何地方都没有提到那些失败的依赖项)。

当请求 mule-transport-jms v2.2.1 时,我或许可以破解 Nexus 以始终检索我的补丁版本,但那很脏。我真的很想能够准确地指定在我的客户端 pom 中使用哪个 GAV,以及什么时候升级(假设错误在 v3.0 中得到正确修复)只需更新我的客户端 pom 以指向版本3.0.0 和我打过补丁的 2.2.1 jar 被忽略了,不需要破解 nexus。显然,我还想避免检查每个 mule 组件并更新它们的 pos 并将它们全部重新部署为 2.2.1 补丁。

有什么想法吗?

最佳答案

您应该能够在您的 pom 中显式设置对 mule-transport-jms 补丁版本的依赖。因为它比标准版本更接近,所以它将覆盖标准版本并使用您的版本。您可能必须将依赖项添加到插件声明中。这blog post描述了如何配置具有依赖性的插件。

如果这不起作用,您能否提供更多有关如何使用补丁版本的信息?

关于java - 如何在 Maven 管理的框架中修补子组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1509573/

相关文章:

java - 方法内部有多个打开和关闭大括号。 - java

tomcat - 如何在 Maven 中使用 tomcat 插件部署多个 war?

Maven 忽略 settings.xml 文件

java - MANIFEST.MF 中的Class-Path 是否只能包含jar 文件?

java - 什么是辅助类?

java - 如何使用java检查Oracle过程是否正确创建?

java - cmake jar包无法执行: no main manifest attribute

amazon-web-services - 在生产中包含 aws-java-sdk jar

Java线程等待/hibernate

maven-2 - Maven jetty下载依赖