gradle - 多模块项目中的gradle继承
问题描述
update 05/30/18
我认为技术问题是由于 ToYonos 所链接的问题造成的。
所以,让我扩大非技术问题:
我有一个多模块项目,其中许多部分由许多不同的人拥有。我们在模块中遵循类似的结构,但没有直接继承。让我们这样说:
- 模块1/
- 爪哇/
- 服务/
- 服务1/
- 常见的/
- 图书馆1/
- 服务/
- 爪哇/
- 模块2/
- 爪哇/
每个模块都以相同的方式松散地做同样的事情,但略有不同;) 我们想在每一层提取公共部分并将它们放在一个公共文件中,但仍然允许每个模块在每一层有自己的自定义。
我希望“应用自”可以做到这一点,但由于范围问题和 gradle 自上而下的命令和控制风格,似乎存在限制(导出方法、插件等)。
我看到的一种方法是完全从这个设置.gradle:
include ':module1'
include ':module1:java'
include ':module1:java:services'
include ':module1:java:services:service1'
对此:
include ':root_common'
project(':root_common').projectDir = "$rootDir/common" as File
include ':root_common:module1'
project(':root_common:module1').projectDir = "$rootDir/module1" as File
include ':root_common:module1:module_common'
project(':root_common:module1:module_common').projectDir = "$rootDir/common/module" as File
include ':root_common:module1:module_common:java'
project(':root_common:module1:module_common:java').projectDir = "$rootDir/module1/java" as File
include ':root_common:module1:module_common:java:java_common'
project(':root_common:module1:module_common:java:java_common').projectDir = "$rootDir/common/java" as File
include ':root_common:module1:module_common:java:java_common:services'
project(':root_common:module1:module_common:java:java_common:services').projectDir = "$rootDir/module1/java/services" as File
.... and so on ....
这似乎相当难以管理。有没有更好的办法?
original 05/29/18
我有以下工作:
我的build.gradle:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
ext {
dockerPluginVersion = '0.19.2'
}
dependencies {
classpath "gradle.plugin.com.palantir.gradle.docker:gradle-docker:${dockerPluginVersion}"
}
}
apply plugin: "com.palantir.docker"
apply plugin: "com.palantir.docker-run"
docker {
....
}
我希望其他人的build.gradle能够使用与上述build.gradle相同的配置而无需复制/粘贴,所以我想出了以下内容:
其他人的build.gradle:
apply from: ${rootDir}/common/docker/build.gradle
当我运行上述内容时,我得到
* What went wrong:
A problem occurred evaluating script.
> Plugin with id 'com.palantir.docker' not found.
如果我仅将My build.gradle的buildscript部分复制/粘贴到他们的build.gradle,那么它可以工作。所以,一定是一些分辨率/订购问题。
我认为基本问题是:如何从build.gradle中应用和配置插件,该插件本身通过apply from被视为插件?
解决方案
推荐阅读
- elasticsearch - ElasticSearch Nest 客户端 Ver 7.13 - Id 字段值未设置为 _id 字段值
- json - 如何在 React 中使用 useState、useEffect 和 axios auth 映射 json 对象?
- windows - 如何使用批处理文件查找包含括号的文件
- r - 重新排序 ggplot2 中的图形
- python - Python pandas datareader 0.4.1 在 daily.py 中添加标题
- c# - 如果捕获到特定异常,则返回到引发异常的行下方的代码
- browser - 会话存储是否会在浏览器版本更新时消失?
- r - 如何绘制已经计算的分布?
- python - 我的函数在重复时会重置值。有没有办法解决这个问题?
- fonts - next js 和 gobal 字体的问题