Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle 多项目中的梯度共享属性_Gradle - Fatal编程技术网

Gradle 多项目中的梯度共享属性

Gradle 多项目中的梯度共享属性,gradle,Gradle,我对Gradle很陌生,尝试做多个项目。在根目录中,项目声明所有公共lib(也将其版本作为属性)并应用插件 例如,root和childcommon项目。 在root的设置中。gradle类型: rootProject.name = 'root' include 'common' buildscript { ext.kotlin_version = '1.3.11' repositories { mavenCentral() } depende

我对Gradle很陌生,尝试做多个项目。在根目录中,项目声明所有公共lib(也将其版本作为属性)并应用插件

例如,
root
和child
common
项目。
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是的,就这么简单。