在我的项目中,我有一个编译依赖关系,依赖于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。