Gradle构建失败"无法解析... $ {javassist.version} ...路径中的非法字符

时间:2014-07-12 12:00:55

标签: maven gradle

在我的Gradle依赖项文件中,我依赖于:

dependencies {
  compile 'net.johnluetke.WeatherAPI:WeatherAPI:0.9.4'

WeatherAPI依赖于org.reflections,它对javassist有一个基于Maven配置文件的依赖。

尝试构建我的(Java 8)应用程序时遇到的错误是:

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':compile'.
> Could not resolve org.javassist:javassist:${javassist.version}.
Required by:
  :weatherenrich:0.1.0 > net.johnluetke.WeatherAPI:WeatherAPI:0.9.4 > org.reflections:reflections:0.9.9-RC2
 > Illegal character in path at index 55: http://repo1.maven.org/maven2/org/javassist/javassist /${javassist.version}/javassist-${javassist.version}.pom

如何构建应用程序?

1 个答案:

答案 0 :(得分:3)

Gradle不支持在已发布的POM中解析占位符 - 有关详细信息,请参阅this support thread

幸运的是,Gradle可以解析具有相同名称的系统属性。

如果我们进入org.reflections:reflections的pom.xml,我们可以看到javassist的配置文件设置:

https://github.com/ronmamo/reflections/blob/master/pom.xml#L129

由于该应用程序是Java 8,我们需要除版本5之外的任何JRE的配置文件,因此我们希望:

<javassist.version>3.18.2-GA</javassist.version>

因此,在Java应用程序的根目录中,添加文件gradle.properties,并添加以下条目:

systemProp.javassist.version=3.18.2-GA

然后应该构建应用程序。