编程语言
首页 > 编程语言> > java – 如何在maven托管框架中修补子组件?

java – 如何在maven托管框架中修补子组件?

作者:互联网

我需要修补mule的mule-transport-jms子组件这个bug(http://www.mulesoft.org/jira/browse/MULE-3983). “修复”很简单,但令我感到烦恼的是将修补后的组件部署到我当地的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中正确修复了bug,比如说)只需更新我的客户端pom指向版本3.0.0和我修补的2.2.1 jar被忽略了,并且不需要破解nexus.显然,我还想避免检查每个mule组件并更新它们的poms并将它们全部重新部署为2.2.1-patched.

有什么想法吗?

解决方法:

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

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

标签:java,maven-2,jar,nexus,mule
来源: https://codeday.me/bug/20190705/1385981.html