在 gradle 构建中忽略依赖 jar 版本



在我的项目中,我有一个编译依赖关系,依赖于sonatype代表的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 中提取的开罗客户端 jar 的 pom 包含对 mrcp 版本 0.2 的引用.jar如下所示

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

开罗客户端.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 指定版本或忽略请求的版本号并替换请求的属性?

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

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

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

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

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

最新更新