作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Gradle 已经有一段时间了,但从未深入研究过它的许多特性和功能,但前几天我决定将我的 Java 项目拆分为两个模块,以便于测试和维护。完成后,我开始阅读 Authoring Multi-projects以及名为 Composite builds 的较新 Gradle 概念之一.然后我开始花费一天的大部分时间尝试应用(我认为我理解的)这些知识来使我的项目模块化。可以肯定地假设我没有成功,现在我在这里寻求帮助以理解这些概念及其应用。
理论工作区
让我们假设我们有以下目录结构:
toolbox
|
├── first-tool
| └── build.gradle
|
├── second-tool
| └── build.gradle
|
├── build.gradle
└── settings.gradle
Root project 'toolbox'
+--- Project ':first-tool'
\--- Project ':second-tool'
first-tool
引入外部依赖
org.master-toolbox:some.other.tool
第二个工具箱依赖但不实现自身:
default - Configuration for default artifacts.
+--- org.master-toolbox:some.other.tool:1.0
| +--- ...
\--- io.toolbox:first-tool
rootProject.name = 'toolbox'
include 'first-tool', 'second-tool'
allprojects {
apply plugin: 'java-library'
group = "io.toolbox"
repositories {
jcenter()
}
}
dependencies {
// This is an external dependency that is resolved through jcentral
implements 'org.master-toolbox:some.other.tool:1.0'
}
dependencies {
// Try to implement first-tool build to inherit dependencies
implementation 'io.toolbox:first-tool'
}
second-tool
找不到
first-tool
我们的控制台中会出现类似于以下错误的内容:
> Could not resolve all files for configuration ':second-tool:compileClasspath'.
> Could not find io.toolbox:first-tool:.
Required by:
project :second-tool
settings.gradle
:
rootProject.name = 'toolbox'
includeBuild `first-tool`
include 'second-tool'
includeBuild
我们的
settings.gradle
中的关键字
first-tool
不再从
toolbox
继承属性并且基本上不再是
toolbox
的子项目.
build.gradle
,那就太好了。它位于顶层项目的根目录中,并为整个层次结构定义了通用插件、存储库、组等。其他项目将拥有自己的
build.gradle
这些文件会给他们独特的属性,但会从顶级项目执行他们的任务。
最佳答案
通过多模块构建,一个模块可以依赖于另一个模块。要让第二个项目依赖于第一个,编辑 second-tool/build.gradle
作为:
dependencies {
implementation project(':first-tool')
}
dependencies {
api 'org.master-toolbox:some.other.tool:1.0'
}
allprojects { ... }
从顶层构建中配置模块或
subprojects{ ... }
.
关于gradle - 如何在 Gradle 中创建可传递的分层多项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56879847/
我是一名优秀的程序员,十分优秀!