在gradle build

时间:2017-01-25 08:42:57

标签: java jar filesystems version build.gradle

在我的项目中,我对sonatype repsitory的jar有一个编译依赖项,而这依赖于我在文件系统中只作为本地副本的jar。

要访问这两个jar,我的build.gradle看起来如下:

dependencies {
    compile fileTree(dir: './3rdparty/mrcp4j/lib', include: ['*.jar'])
    compile group: 'net.sourceforge.halef', name: 'cairo-client', version: '0.1-SNAPSHOT'
}

现在,我从sonatype中提取的cairo-client jar的pom包含对mrcp.jar的0.2版本的引用,如下所示

<dependency>
    <groupId>org.mrcp4j</groupId>
    <artifactId>mrcp4j</artifactId>
    <version>0.2</version>
    <scope>compile</scope>
</dependency>

cairo-client.jar的供应商没有将mrcp4j.jar发布为第三方或类似的,但似乎依赖于本地maven存储库中的副本。

构建失败,因为gradle无法将指定的版本与我能够提供的版本匹配。

Could not find org.mrcp4j:mrcp4j:0.2.
  Searched in the following locations:
    https://repo1.maven.org/maven2/org/mrcp4j/mrcp4j/0.2/mrcp4j-0.2.pom
    https://repo1.maven.org/maven2/org/mrcp4j/mrcp4j/0.2/mrcp4j-0.2.jar
    https://jcenter.bintray.com/org/mrcp4j/mrcp4j/0.2/mrcp4j-0.2.pom
    https://jcenter.bintray.com/org/mrcp4j/mrcp4j/0.2/mrcp4j-0.2.jar
    https://oss.sonatype.org/content/repositories/snapshots/org/mrcp4j/mrcp4j/0.2/mrcp4j-0.2.pom
    https://oss.sonatype.org/content/repositories/snapshots/org/mrcp4j/mrcp4j/0.2/mrcp4j-0.2.jar
Required by:
  org.jvoicexml:org.jvoicexml.implementation.mrcpv2:0.7.8 > net.sourceforge.halef:cairo-client:0.1-SNAPSHOT
  org.jvoicexml:org.jvoicexml.implementation.mrcpv2:0.7.8 > net.sourceforge.halef:cairo-sip:1.0-SNAPSHOT

是否可以在文件系统中为jar指定版本或忽略请求的版本号并替换所请求的属性?

1 个答案:

答案 0 :(得分:0)

与此同时,我找到了针对这种情况的解决方法。我在这里分享它,希望它对其他人有用。无论如何,我对这方面的改进感兴趣。

我的解决方法是基于忽略所有配置中的依赖jar,并保留对文件系统中本地jar的引用。

所以我所做的只是添加以下几行

configurations.all {
    exclude group: ' org.mrcp4j', module:'mrcp4j'
}

必须保留对文件系统的依赖以提供jar。