我需要为这个错误(http://www.mulesoft.org/jira/browse/MULE-3983)修补 mule 的 mule-transport-jms 子组件。“修复”很简单,但让我烦恼的是将修补的组件部署到我的本地 maven repo(由 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 组件并更新它们的 pom 并将它们全部重新部署为 2.2.1-patched。
有什么想法吗?