Gradle:将包含buildscript的项目作为子项目
我有以下问题:有一个项目有自己的buildscript部分:Gradle:将包含buildscript的项目作为子项目,gradle,Gradle,我有以下问题:有一个项目有自己的buildscript部分: buildscript { repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } } 当我将其作为子项目包含到另一个项目中(也有类似的buildscript部分)时,我得到以下错
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
当我将其作为子项目包含到另一个项目中(也有类似的buildscript部分)时,我得到以下错误:
* What went wrong: A problem occurred evaluating project ':blablabla'.
> Cannot change dependencies of configuration ':blablabla:classpath' after it has been resolved.
此构建脚本对于这两个场景都是必需的,因为我需要让两个场景正常工作:
blabla
被视为第一个项目的子项目时// mainProject's build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
plugins {
id 'org.jetbrains.intellij' version "0.0.36"
}
// Some other irrelevant stuff
blabla
sbuild.gradle
// subProject's build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
plugins {
id 'org.jetbrains.intellij' version "0.0.36"
}
// Some other irrelevant stuff
include ':some-subproject'
和settings.gradle
:
// settings.gradle
include ":subProject"
经过一段时间的深入研究,最终找到了可行的解决方案:只需有条件地检查当前项目是否被作为根项目调用,就可以简单地切断子项目中的
buildscript
部分:
if (project == rootProject) {
buildscript {
// ...
}
}
要使父项目生成某个子项目,需要进行2次更改 在父项目的
build.gradle
文件中
dependencies {
...
compile project(':some-subproject')
...
}
在父项目的设置中。gradle
// subProject's build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
plugins {
id 'org.jetbrains.intellij' version "0.0.36"
}
// Some other irrelevant stuff
include ':some-subproject'
您是如何将project2作为project1的子项目包括进来的?正确:在
设置中。gradle
我是这样做的:包括:blablabla
您能提供一个重现问题的例子吗?@Opal添加到帖子中。目录结构是什么样的?