Java Maven为包含的JAR依赖项定义子依赖项

Java Maven为包含的JAR依赖项定义子依赖项,java,maven,jar,Java,Maven,Jar,我正在从事一个Java项目,使用maven作为我们的依赖项管理器/构建工具。我当前在将依赖项的依赖项解析为正确版本时遇到问题 所讨论的依赖项称为jasperreports-functions-6.1.0.jar,它不是托管在maven repo中,而是以jar形式提供的 我遇到的问题是jasperreports函数需要commons lang 2.6。不方便的是,在“编译”期间,Maven自己构建commons lang 2.1来创建简化的pom。这似乎导致jasperreports函数尝试使用

我正在从事一个Java项目,使用maven作为我们的依赖项管理器/构建工具。我当前在将依赖项的依赖项解析为正确版本时遇到问题

所讨论的依赖项称为jasperreports-functions-6.1.0.jar,它不是托管在maven repo中,而是以jar形式提供的

我遇到的问题是jasperreports函数需要commons lang 2.6。不方便的是,在“编译”期间,Maven自己构建commons lang 2.1来创建简化的pom。这似乎导致jasperreports函数尝试使用commons lang 2.1,因为它是可用的,但这是无效的(运行时方法未定义错误)

我曾尝试添加commons lang 2.6作为依赖项,但jasperreports函数似乎仍在使用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>

如何强制jar依赖项使用子依赖项的特定版本?

您是否尝试对依赖项条目重新排序, 首先加载commons lang,然后加载jasperreports? 编辑:
也许这会对你有所帮助:

你所做的应该足够了。较新的版本应覆盖较旧的版本,而您显式指定的版本应覆盖任何临时依赖项。我相信Maven2.x在这方面有问题,这就是我升级到Maven3.x的原因

我怀疑问题出在别的地方。我建议尝试删除common lang 2.1,我想这应该会告诉您真正的问题是什么。

试试这个:
1>Maven clean.

2>右键单击project->maven->update project configuration->force update

我将查看maven 3。请参阅我在主要帖子中关于删除2.1的编辑。这表明需要commons lang 2.1的是
maven jar插件。你确定jasper在运行时使用它吗?是的,看起来maven使用2.1来创建简化的pom。我相当肯定Jasper正在使用2.1,因为我得到了一个未定义的方法错误,并且我调用的方法直到2.6才被引入。编辑:事实证明我已经在使用maven 3.3了,重新排序似乎没有什么帮助。我尝试过你的第二个建议,但也没有帮助,但我会继续研究。你是否尝试过将commons lang 2.6库添加到本地maven存储库中,并将pom.xml指向该存储库?
[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]