Maven gradle构建和pom解析问题

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 >

我有一个关于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 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'
}