可能性1
如果旧的和新的commons-io包/类名相似,但不包括旧的依赖项pagerduty-client
,可能会起作用。
https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html
<dependency>
<groupId>com.github.dikhan</groupId>
<artifactId>pagerduty-client</artifactId>
<version>3.0.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
</dependency>
这取决于commons-io的二进制API在1.3.2版本和2.x版本之间足够相似。看起来有很多重叠,从每个版本的代码来看:
可能性2
将应用程序拆分,使commons-io依赖项不共享且不冲突。
您的应用程序中的pagerduty-client
和zucchini
部分可能不需要“捆绑”在一起,因此可以将它们拆分。
如果它们确实需要一起工作,则仍然可以有两个应用程序/进程并在它们之间发送消息。
注意
我克隆了pagerduty-client
repo,并将commons-io依赖项从org.apache.commons:commons-io:1.3.2
更改为commons-io:commons-io:2.5
,测试成功了,因此也许您可以建议项目所有者升级commons-io。
查看代码后,似乎几乎没有使用commons-io(一个地方,HttpApiServiceImpl.java
):
\pagerduty-client>findstr /s /c:"commons" *.java
src\main\java\com\github\dikhan\pagerduty\client\events\domain\AcknowledgeIncident.java:import org.apache.commons.lang3.StringUtils;
src\main\java\com\github\dikhan\pagerduty\client\events\domain\Incident.java:import org.apache.commons.lang3.StringUtils;
src\main\java\com\github\dikhan\pagerduty\client\events\domain\Incident.java:import org.apache.commons.lang3.builder.Builder;
src\main\java\com\github\dikhan\pagerduty\client\events\domain\Payload.java:import org.apache.commons.lang3.StringUtils;
src\main\java\com\github\dikhan\pagerduty\client\events\domain\ResolveIncident.java:import org.apache.commons.lang3.StringUtils;
src\main\java\com\github\dikhan\pagerduty\client\events\HttpApiServiceImpl.java:import org.apache.commons.io.IOUtils;
src\main\java\com\github\dikhan\pagerduty\client\events\PagerDutyEventsClient.java:import org.apache.commons.lang3.StringUtils;
src\main\java\com\github\dikhan\pagerduty\client\events\utils\FakePagerDutyEventsClient.java:import org.apache.commons.lang3.StringUtils;