Maven gradle构建和pom解析问题
我有一个关于Gradle构建的问题,我很难解决 我不断收到一个错误,上面写着更新:Maven gradle构建和pom解析问题,maven,gradle,compiler-errors,Maven,Gradle,Compiler Errors,我有一个关于Gradle构建的问题,我很难解决 我不断收到一个错误,上面写着更新: > Could not resolve credit/open/fabric:credit-open-fabric-api:17.4.1.RELEASE. > Could not parse POM http://Mywebsite/content/groups/public/openapi/17.4.1.RELEASE/open-api-17.4.1.RELEASE.pom >
> Could not resolve credit/open/fabric:credit-open-fabric-api:17.4.1.RELEASE.
> Could not parse POM http://Mywebsite/content/groups/public/openapi/17.4.1.RELEASE/open-api-17.4.1.RELEASE.pom
> Could not resolve open:api:17.4.1.RELEASE.
> Could not resolve open:api2:17.4.1.RELEASE.
> Could not parse POM http://Mywebsite/content/groups/public/open/api2/17.4.1.RELEASE/api2-17.4.1.RELEASE.pom
> Could not resolve open:open-parent:17.4.1.RELEASE.
> Could not resolve open:open-parent:17.4.1.RELEASE.
> Could not parse POM http://Mywebsite/content/groups/public/open/open-parent/17.4.1.RELEASE/open-parent-17.4.1.RELEASE.pom
> Unable to resolve version for dependency 'tibco:${tibrv.native}:jar'
堆栈跟踪显示解析包含依赖项的pom时存在问题,如下所示:
<dependency>
<groupID>tibco</groupID>
<artifactId>${tibrv.native}</artifactID>
</dependency>
<dependency>
<groupID>tibco</groupID>
<artifactId>tibask</artifactID>
</dependency>
.
.
.
<profile>
<id>tib-windows</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<tibrv.native>tibask</tibrv.native>
</properties>
</profile>
在我的POM中,耶稣诞生是一个神器
是否需要在build.gradle文件中为gradle中的pom解析器添加一些内容,以获得${tibrv.native}
值的真实值?如上所述,
配置文件激活不受支持
您可以设置tibrv.native
系统属性,我真的不确定,但值得一试
一种可能的解决方法是将nativity-8.3.1.pom的“固定”版本存储在另一个存储库中,该存储库在主存储库之前订购。Maven存储库可以从本地文件夹中获取,我认为gradle能够从多个存储库中获取单个依赖项的工件(例如,从一个repo获取pom,从另一个repo获取jar),但不能100%确定
例如:
然后,您可以将pom xml的固定版本存储在
$projectDir/localrepo/tibco/nativity/8.3.1/nativity-8.3.1.pom
另一种可能的解决方案(不确定是否有效)是使用配置transitive=false
。希望在这种情况下,gradle不会试图解决可传递依赖关系。显然,您需要自己手动添加可传递依赖项。此外,这样做会丢失组/工件/版本元数据,因此如果使用者引用您的项目,此依赖项将无法参与依赖项解析
乙二醇
请粘贴pom.xml
中定义tibrv.native
属性的相关部分。希望它不在一个正是它所在的框架内…有关gradle中maven概要文件支持的讨论,请参阅。为什么在依赖关系管理中使用概要文件被认为是一种反模式呢?如果我尝试在java中使用system.setProperty来设置${tibrv.native},它会起作用吗值…我目前没有更改pom的权限gradle是否有办法查看存储库位置并忽略位于此处的pom文件,而只使用此位置内的jar?我想是的,请看我的另一个答案我面临的问题是pom文件正在读取,gradle没有在repo位置中找到jar tibco:$tibrv.native}:jar(不应该,因为它不存在)。。基本上,Gradle没有正确地解析pom,我希望transitive=false
意味着pom中的依赖项被忽略了。我猜我错了:(
repositories {
maven {
url uri('localrepo') // gradle will look here first
}
maven {
url 'http://Mywebsite/content/groups/public'
}
}
$projectDir/localrepo/tibco/nativity/8.3.1/nativity-8.3.1.pom
configurations {
hack { transitive = false}
}
dependencies {
hack 'tibco:nativity:8.3.1'
compile configurations.hack.singleFile
compile 'foo:bar:1.0'
}