build.gradle 个库项目中 buildscript 标签的最佳实践
Best practice for buildscript tag in build.gradle of library projects
我想知道为 Android 库项目定义构建脚本存储库和依赖项的最佳/预期方式是什么。
在野外(如Github)大多数回购协议都在其中定义了以下内容build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
} }
但是,如果我在 Android Studio 中创建一个库项目,则不会创建此构建脚本块,因为它已经在根 build.gradle 文件中,因此没有必要(我假设)。
那么正确的方法是什么,只在根 build.gradle 或每个库项目中定义一次(这也意味着在新插件版本的情况下更新每个库的版本号)。还是取决于我是否要独立于我的主应用程序发布库?
如果你正在开发一个库,实际上并没有顶层 build.gradle:顶层适用于多模块项目中的所有模块,但是一个库最好作为一个独立的单一模块来实现。
最好的做法可能是为您的库模块创建一个 build.gradle 文件,并在其中包含一个 buildscript
块和存储库和 Android 插件 Gradle 版本。这样它就更好地独立存在,并且它不会隐含地依赖于具有顶级 build.gradle 文件的项目。
有一个巨大的警告,它会导致很多这种情况,但是 - 如果您在具有顶级 build.gradle 与竞争 buildscript
块,顶级构建文件将获胜,它将忽略模块中的块。
这可能不是什么大问题,但是如果您的模块依赖于特定版本的 Android Gradle 插件,例如,它在一个使用不同版本的插件,那么你的模块就会丢失,它可能 运行 出现问题。另一种说法是,它只能为单个构建中的所有模块使用一个版本的插件,我相信第一个指定它的人会为每个人设置它。
在实践中,只有当您依赖于 Android Gradle 插件的 1.0 版之后的某些特定功能时,这才有可能成为问题,并且它包含在使用 1.0.
的项目
这里有一些细微之处我会提到但不会回答(我很抱歉用更多问题回答你的问题)——如果其他人肯定知道,请自己回答,或编辑我的答案,或在评论中提及:
- 如果您的
buildscript
块将新插件添加到类路径怎么办?他们是被添加了还是被忽略了?
- 如果您的
buildscript
块将新存储库添加到搜索路径怎么办?他们会被捡起来吗?
我想知道为 Android 库项目定义构建脚本存储库和依赖项的最佳/预期方式是什么。
在野外(如Github)大多数回购协议都在其中定义了以下内容build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
} }
但是,如果我在 Android Studio 中创建一个库项目,则不会创建此构建脚本块,因为它已经在根 build.gradle 文件中,因此没有必要(我假设)。
那么正确的方法是什么,只在根 build.gradle 或每个库项目中定义一次(这也意味着在新插件版本的情况下更新每个库的版本号)。还是取决于我是否要独立于我的主应用程序发布库?
如果你正在开发一个库,实际上并没有顶层 build.gradle:顶层适用于多模块项目中的所有模块,但是一个库最好作为一个独立的单一模块来实现。
最好的做法可能是为您的库模块创建一个 build.gradle 文件,并在其中包含一个 buildscript
块和存储库和 Android 插件 Gradle 版本。这样它就更好地独立存在,并且它不会隐含地依赖于具有顶级 build.gradle 文件的项目。
有一个巨大的警告,它会导致很多这种情况,但是 - 如果您在具有顶级 build.gradle 与竞争 buildscript
块,顶级构建文件将获胜,它将忽略模块中的块。
这可能不是什么大问题,但是如果您的模块依赖于特定版本的 Android Gradle 插件,例如,它在一个使用不同版本的插件,那么你的模块就会丢失,它可能 运行 出现问题。另一种说法是,它只能为单个构建中的所有模块使用一个版本的插件,我相信第一个指定它的人会为每个人设置它。
在实践中,只有当您依赖于 Android Gradle 插件的 1.0 版之后的某些特定功能时,这才有可能成为问题,并且它包含在使用 1.0.
的项目这里有一些细微之处我会提到但不会回答(我很抱歉用更多问题回答你的问题)——如果其他人肯定知道,请自己回答,或编辑我的答案,或在评论中提及:
- 如果您的
buildscript
块将新插件添加到类路径怎么办?他们是被添加了还是被忽略了? - 如果您的
buildscript
块将新存储库添加到搜索路径怎么办?他们会被捡起来吗?