Gradle 多项目中的梯度共享属性
我对Gradle很陌生,尝试做多个项目。在根目录中,项目声明所有公共lib(也将其版本作为属性)并应用插件 例如,Gradle 多项目中的梯度共享属性,gradle,Gradle,我对Gradle很陌生,尝试做多个项目。在根目录中,项目声明所有公共lib(也将其版本作为属性)并应用插件 例如,root和childcommon项目。 在root的设置中。gradle类型: rootProject.name = 'root' include 'common' buildscript { ext.kotlin_version = '1.3.11' repositories { mavenCentral() } depende
root
和childcommon
项目。在
root
的设置中。gradle
类型:
rootProject.name = 'root'
include 'common'
buildscript {
ext.kotlin_version = '1.3.11'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
subprojects {
buildscript {
repositories {
mavenCentral()
}
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
}
在root
的build.gradle
中键入:
rootProject.name = 'root'
include 'common'
buildscript {
ext.kotlin_version = '1.3.11'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
subprojects {
buildscript {
repositories {
mavenCentral()
}
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
}
现在我只想在特定的子项目中使用另一个库。在common
的build.gradle
中执行此操作:
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
}
}
从root
的文件夹运行gradle命令时工作正常,但从common
的文件夹运行时,出现消息无法为org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler
类型的对象获取未知属性“kotlin_version”
我做错了什么?或者有什么办法吗?在多项目中共享LIB和属性的最佳实践是什么
对我来说,它看起来像是
common
对它的“父”项目一无所知,所有关系都是在root设置中定义的。Gradle无法解析属性的原因是文件夹common
中的项目名为commons
。这是由common
的设置.gradle
中的拼写错误引起的。幸运的是,这很容易修复(common/settings.gradle
):
或者,只需删除公共/settings.gradle
,在这种情况下它是完全可选的
请考虑阅读Gradle官方文档和指南,以了解有关多项目构建的更多信息和最佳实践。common文件夹中的失败消息是什么?@Eugene我的答案是这里说
无法获取类型对象的未知属性“kotlin_version”org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler
,很抱歉一开始没有提到它time@JonathanJohx没有看到SpringBoot或BootJar如何与多维数据库中属性的抽象问题相关-projects@Eugene然后你做了这个启用jar和禁用bootJar吗?在你的build.gradle的公共子项目中,这只是我的疏忽。子项目的名称与包含的common
相同。同样,它在从根项目文件夹调用gradle build
时起作用,在从公共项目文件夹调用gradle build
时失败。对我来说,common似乎不知道它有“父”项目,所有关系都是在根中定义的settings@Eugene请检查您的问题并确保其准确无误。也许有可能通过Github提供项目?出于某种原因,在这个线程中提及不起作用。删除common/settings.gradle
有帮助。但是为什么它以前不起作用呢?Gradle是否先在当前文件夹中查找设置。Gradle
,然后在树中上升?@Eugene是的,就这么简单。