如何忽略坏的 pom '不一致的模块描述符'(版本)

jma*_*eis 10 gradle pom.xml gradle-dependencies

我需要一个依赖项,它的 pom.xml 文件中的版本号不一致。

Apache XmlSchema-Pom 的版本SNAPSHOT显然不正确,因为它应该是1.1

根据此gradle 讨论,如果 maven 存储库指定为常春藤存储库,添加@jar或添加transitive = false到依赖项,则所有这些对我都不起作用

build.gradle是我的尝试:

group 'de.company'
version '1.0-SNAPSHOT'

apply plugin: 'maven'
apply plugin: 'java'

repositories {
    // specified as ivy repo
    // ivy {
    //     url = mavenCentral().url
    // }
    mavenCentral()
}

dependencies {
    // with @jar and transitive
    // compile (group: 'org.apache.ws.commons', name: 'XmlSchema', version: '1.1', ext: 'jar') {
    //     transitive = false
    // }
    compile group: 'org.apache.ws.commons', name: 'XmlSchema', version: '1.1'
}
Run Code Online (Sandbox Code Playgroud)

这是gradle输出的错误消息:

Could not resolve all dependencies for configuration ':compileClasspath'.
> Could not resolve org.apache.ws.commons:XmlSchema:1.1.
  Required by:
      de.company:gradle-test:1.0-SNAPSHOT
   > Could not resolve org.apache.ws.commons:XmlSchema:1.1.
      > inconsistent module metadata found. Descriptor: org.apache.ws.commons:XmlSchema:SNAPSHOT Errors: bad version: expected='1.1' found='SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)

Md *_*ker 11

我解决这个问题的方式不同,我不想接触 artifactory pom,因为我无法访问 artifactory。这是您在 gradle.build 中需要的代码

repositories {
    maven {
        url 'http://xxxxx/xx'
        metadataSources {
             artifact() //Look directly for artifact
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


jma*_*eis 2

就当前日期而言,没有实际的方法可以忽略 gradle 中 poms 的验证。

仍然有一些方法可以解决这个问题。

  1. 尝试使用该依赖项的其他版本,其中 pom 有效
  2. 检查其他存储库,也许他们有一个有效的 pom 来满足您想要的依赖关系。

    这将是我的XmlSchemajcenter 存储库示例(XmlSchema来自 jcenter

  3. 自行下载源码并将其部署到本地/公司存储库中并使用此版本