maven - Gradle 构建失败,并显示“无法解析...${javassist.version}...路径中存在非法字符”

标签 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

如何构建我的应用程序?

最佳答案

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

然后应该构建应用程序。

关于maven - Gradle 构建失败,并显示“无法解析...${javassist.version}...路径中存在非法字符”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24712717/

相关文章:

java - Maven 代码覆盖率

Maven 错误构建失败

linux - .gradle 文件夹究竟是什么时候在 Linux 的主目录中创建的?

android - 如何通过导入正确的库来避免 DEX 64K LIMIT

java - Gradlew init - 没有这样的文件或目录

android - Android构建突然开始失败:找不到资源android:attr/fontVariationSettings

java - 在任何Java构建管理器(maven,gradle,sbt等)中定义程序包冲突解决优先级

java - 将 Artifact 从项目添加到本地存储库

java - "HTTP Status 500 - Servlet.init() for servlet spring threw exception"

Android 库拒绝创建 R.java,除非构建为 com.android.application