解析后无法更改配置':compile'的依赖关系

rez*_*eza 11 java gradle

我有一个使用json.jar库的简单java项目.gradle.build文件内容是:

apply plugin: 'java'
jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'main.java.Main'
    )
  }
}
dependencies {
  compile 'org.json:json:20160212'
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我想将json添加到我的类路径并使用它时,会发生此错误

* Where:
Build file '/home/tina-admin/Documents/myJavaProjects/LongMan/build.gradle' line: 11

* What went wrong:
A problem occurred evaluating root project 'LongMan'.
> Cannot change dependencies of configuration ':compile' after it has been resolved.
Run Code Online (Sandbox Code Playgroud)

我该怎么解决这个问题?

rro*_*y86 11

首先,您必须添加一个repositories块来指定从中检索依赖项的位置(通常在之前dependencies {...}.

repositories {
  mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)

然后,如果你把dependencies块放在块之前jar它似乎工作,虽然我不确定为什么它不起作用的另一种方式(可能jar {...}使用compile配置并"锁定"它).

  • 附加组件:问题似乎是由于在`jar`块中使用`configurations.compile`而引起的 (4认同)
  • `configurations.compile.collect` 解析配置。此后,配置为只读。但下面的“依赖关系”块尝试修改它。因此出现错误。 (2认同)

nuh*_*oca 7

如果您使用它,请尝试设置org.gradle.configureondemandfalsegradle.properties