0

我正在将一些遗留代码移植到新版本。一个特定模块(slf4j),其中 1.5x 版本与 1.6x 和 1.7x 不兼容,我的问题是我的项目所依赖的项目作为 jar 包含在 classpath 中。有没有办法解决这样的问题?

4

2 回答 2

2

如果 pom 中存在直接依赖项,Maven 将使用它并省略对同一工件的任何传递依赖项,例如这里

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-core</artifactId>
    <version>2.12.1</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>

camel-core 具有传递依赖 slf4j-api-1.6.6 但 Maven 会选择 slf4j-api-1.7.5

于 2013-10-15T15:09:39.977 回答
0

我解决问题的方法是重新部署我的项目所依赖的项目。由于它是一个 jar,我必须以 maven 格式重新创建它并添加必要的排除语句以停止该级别的所有传递依赖项。这可能不是最佳实践,但在我的情况下有效。我想新版本的项目都是基于 maven 的排除标签应该足够了

于 2013-10-15T17:55:34.360 回答