多项目中的Gradle共享属性

时间:2019-01-09 00:02:53

标签: gradle

我对Gradle还是很陌生,尝试进行多项目。在根项目中,声明所有通用库(也将其版本作为属性)并应用插件。

例如,style.css和子root项目。
common的{​​{1}}中,输入:

root

settings.gradle的{​​{1}}类型中:

rootProject.name = 'root'
include 'common'

现在我只想在特定的子项目中使用另一个库。在root的{​​{1}}中进行此操作:

build.gradle

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" } } 的文件夹运行gradle命令时,它工作正常,但从common的文件夹运行时,失败,并显示消息build.gradle

我做错了什么?还是有什么办法?在多项目中共享库和属性的最佳实践是什么?

对我来说,buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version" } } 对其“父”项目一无所知,所有关系都在root的设置中定义。

2 个答案:

答案 0 :(得分:3)

Gradle无法解析该属性的原因是,文件夹common中的项目被命名为commons。这是由于common的{​​{1}}中的拼写错误引起的。幸运的是,这很容易修复(settings.gradle):

common/settings.gradle

或者,只需删除rootProject.name = 'common' ,在这种情况下它是完全可选的。

请考虑阅读authoring multi-project builds的官方Gradle文档和指南create multi-project builds,以获取有关多项目构建的更多信息和最佳实践。

答案 1 :(得分:-1)

默认情况下,在常见的build.gradle中禁用它jar并启用bootJar,因此您可以通过以下方式添加此标志:

jar {
    enabled = true
}

bootJar {
    enabled = false
}