如何使用 gradle 包装器、初始化脚本、多项目和最好的想法
How to work with gradle wrapper, init script, multi project and best with idea
总结组件和环境:
- 多项目,通常每个 gradle 项目都是单独的 git
- 你不想使用子模块
- gradle init scripts 在单独的配置/超级存储库中
- 使用gradle wrapper
- 对于 GUI 家伙:IntelliJ IDEa 与 Gradle integratiom -> help
- 允许使用gradle idea -> guide
所以,
Q: 如何优雅地嫁接这些组件。如何在不影响其他存储库的情况下定义要在单个存储库的包装器中使用的初始化脚本。
我知道:
- init 脚本通常在 "GRADLE_HOME" 目录中
- 可以通过
-I
为每个控制台定义初始化脚本
(是的,我阅读了文档)
发现的问题:
- intelliJ 不允许在 UI
中定义 -I
选项
- 如果您想在项目之间共享,任何人都需要签出并更新单独的存储库
-
settings.gradle
|| gradle.properties
文件似乎也不支持任何选项
约束:
(虽然这些是可能的答案,但它们既不优雅也不证明错误)
- 所需的解决方案应适用于单个项目,不应全局应用于同一台计算机上的所有项目
隐藏问题:
- 我可以包含来自 URL 的全局 gradle 设置,这样就不需要元存储库的克隆了吗??
- URL include 是否与初始化脚本一样?或者你可以用 initScript 做什么你不能包含什么?
您可以执行以下操作:
- 使用初始化脚本
中定义的常用设置创建自定义 gradle 分发
- 通过 gradle/wrapper/gradle-wrapper.properties
中的 distributionUrl 键将您的项目配置为使用该分布
- 使用常规 gradle 从命令构建 line/usual 导入到 intellij - 它可以正常工作
顺便说一下,有一个 gradle plugin 用于简化自定义 gradle 分发构造
您可以使用buildSrc customization - 取决于您的需要 -
其中 buildSrc/build.gradle
在项目的配置阶段之前生效。
您应该知道,有一个不同的范围,即 buildSrc/build.gradle
的 allprojects
的范围是 buildSrc
下面的任何项目,而不是您的正常项目。
更一般地说:buildSrc/build.gradle
就像您在 buildscript
中正常执行的操作或 script plugins and you can write clean plugin code 中的任务声明一样,无需将其发布为插件。
⚠️ 限制:
- 你不能关心插件解析 - 因此你必须进入你的项目
settings.gradle
- 您不能更改项目的依赖管理 - 您仍然必须在项目的 buildSrc 中执行此操作
两者你都可以看到How can the gradle plugin repository be changed?
- 你仍然需要在你的项目中应用(甚至是自己
buildSrc
homed)插件(如果你问我什么是好事,因为它更可见/更清楚会发生什么)
- 你不能与第二个存储库共享这个 - 不使用 git 子模块等
总结组件和环境:
- 多项目,通常每个 gradle 项目都是单独的 git
- 你不想使用子模块
- gradle init scripts 在单独的配置/超级存储库中
- 使用gradle wrapper
- 对于 GUI 家伙:IntelliJ IDEa 与 Gradle integratiom -> help
- 允许使用gradle idea -> guide
所以,
Q: 如何优雅地嫁接这些组件。如何在不影响其他存储库的情况下定义要在单个存储库的包装器中使用的初始化脚本。
我知道:
- init 脚本通常在 "GRADLE_HOME" 目录中
- 可以通过
-I
为每个控制台定义初始化脚本 (是的,我阅读了文档)
发现的问题:
- intelliJ 不允许在 UI 中定义
- 如果您想在项目之间共享,任何人都需要签出并更新单独的存储库
-
settings.gradle
||gradle.properties
文件似乎也不支持任何选项
-I
选项
约束: (虽然这些是可能的答案,但它们既不优雅也不证明错误)
- 所需的解决方案应适用于单个项目,不应全局应用于同一台计算机上的所有项目
隐藏问题:
- 我可以包含来自 URL 的全局 gradle 设置,这样就不需要元存储库的克隆了吗??
- URL include 是否与初始化脚本一样?或者你可以用 initScript 做什么你不能包含什么?
您可以执行以下操作:
- 使用初始化脚本 中定义的常用设置创建自定义 gradle 分发
- 通过 gradle/wrapper/gradle-wrapper.properties 中的 distributionUrl 键将您的项目配置为使用该分布
- 使用常规 gradle 从命令构建 line/usual 导入到 intellij - 它可以正常工作
顺便说一下,有一个 gradle plugin 用于简化自定义 gradle 分发构造
您可以使用buildSrc customization - 取决于您的需要 -
其中 buildSrc/build.gradle
在项目的配置阶段之前生效。
您应该知道,有一个不同的范围,即 buildSrc/build.gradle
的 allprojects
的范围是 buildSrc
下面的任何项目,而不是您的正常项目。
更一般地说:buildSrc/build.gradle
就像您在 buildscript
中正常执行的操作或 script plugins and you can write clean plugin code 中的任务声明一样,无需将其发布为插件。
⚠️ 限制:
- 你不能关心插件解析 - 因此你必须进入你的项目
settings.gradle
- 您不能更改项目的依赖管理 - 您仍然必须在项目的 buildSrc 中执行此操作
两者你都可以看到How can the gradle plugin repository be changed?
- 你仍然需要在你的项目中应用(甚至是自己
buildSrc
homed)插件(如果你问我什么是好事,因为它更可见/更清楚会发生什么) - 你不能与第二个存储库共享这个 - 不使用 git 子模块等