我对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的设置中定义。
答案 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
}