Gradle异常之ModuleVersionResolveException

异常内容:

Warning:root project 'mobi-pc': Web Facets/Artifacts will not be configured properly Details: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':runtimeClasspath'. Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.learn:koo-ordercenter-api:1.0.0-test-SNAPSHOT. Required by: project : Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.learn:koo-ordercenter-api:1.0.0-test-SNAPSHOT. Caused by: org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.MetaDataParseException: inconsistent module metadata found. Descriptor: com.learn:koo-ordercenter-api:1.0.0-dev-SNAPSHOT Errors: bad version: expected='1.0.0-test-SNAPSHOT' found='1.0.0-dev-SNAPSHOT'
主要错误:bad version.....

背景

根据不同的环境加载引入不同的jar包,该包存在私服

//部分代码省略
gradle.propertie配置
environment=dev   //test、prod

build.gradle配置
ext{
  orderCenterVersion = 1.0.0-${environment}-SNAPSHOT
}

implementation "com.learn:koo-ordercenter-api:$orderCenterVersion
原因

直接异常中显示找不到指定的环境的jar,到.gradle仓库中查看对应目录下只有.pom文件,并没有从私服下载具体的jar,gradle下载从私服下载jar都是根据对应的.pom文件进行解析下载,但是现在有pom,但还下载不了jar是因为上传的pom内容有问题,如下:

    koo-ordercenter-api
    jar
    1.0.0-${project.environment}-SNAPSHOT

发布到私服的pom不能存在占位符,正因为placeholder没有被替换掉才导致gradle无法正确解析此.pom文件,以至于不能下载对应的jar。
可以测试在下载的pom文件中手动修改version,会发现jar会自动下载。

解决

一个已经部署到Maven仓库里的pom应当将所有的placeholder都替换掉,否则将不再可用。发布此pom的人重新发布。

============未完待续============
同样的发布的pom为什么maven可以正常使用。

你可能感兴趣的:(Gradle异常之ModuleVersionResolveException)