我正在开发一个Java项目,使用maven作为我们的依赖管理器/构建工具。我目前在解决依赖项对正确版本的依赖性时遇到问题。
有问题的依赖项称为jasperreports-functions-6.1.0.jar,它不是托管在maven仓库中,而是以jar形式提供。
我遇到的问题是jasperreports-functions需要commons-lang 2.6。不方便的是,在“编译”期间,Maven自己构建了commons-lang 2.1来创建简化pom。这似乎导致jasperreports-functions尝试使用commons-lang 2.1因为它可用,但这是无效的(运行时方法未定义的错误。)
我尝试添加commons-lang 2.6作为依赖,但似乎jasperreports-functions正在使用2.1版本。
pom.xml snip:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.1.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-functions</artifactId>
<version>6.1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/jasperreports-functions-6.1.0.jar</systemPath>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
使用“mvn dependency:tree”我可以看到没有依赖需要commons-lang。
如果我从“.m2 \ repository \ commons-lang \ commons-lang”删除2.1,它将被maven重新创建。如果我清空文件夹并锁定其上的权限,然后再次运行maven我收到错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.4:jar (default-jar) on project JavaLibrary: Execution default-jar of goal org.apache.maven.plugins:maven-jar-plugin:2.4:jar failed: Plugin org.apache.maven.plugins:maven-jar-plugin:2.4 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-jar-plugin:jar:2.4 -> commons-lang:commons-lang:jar:2.1: Failed to read artifact descriptor for commons-lang:commons-lang:jar:2.1: Could not transfer artifact commons-lang:commons-lang:pom:2.1 from/to central (https://repo.maven.apache.org/maven2): C:\Users\Lowell\.m2\repository\commons-lang\commons-lang\2.1\commons-lang-2.1.pom.part.lock (Access is denied) -> [Help 1]
如何强制jar依赖项使用某个版本的子依赖项?
答案 0 :(得分:0)
您是否尝试重新排序依赖项条目, 首先加载commons-lang然后加载jasperreports? 修改强> 也许这可以帮到你:dependency:analyze-dep-mgt
答案 1 :(得分:0)
你在做什么就足够了。较新的版本应覆盖旧版本,并且您明确指定的版本应覆盖任何瞬态依赖项。我相信Maven 2.x在这方面存在问题,这就是为什么我更新到Maven 3.x
我怀疑问题出在其他地方。我建议尝试删除common-lang 2.1,我怀疑这应该会告诉你真正的问题是什么。
答案 2 :(得分:0)
试试这个:
1&gt; Maven clean。
2&gt; 右键点击项目&gt; maven - &gt;更新项目配置 - &gt;强制更新