Plugins Gradle for Maven';缺少OOTB支持;它提供了范围。弹簧&x27;s Gradle propdeps插件未按预期运行

Plugins Gradle for Maven';缺少OOTB支持;它提供了范围。弹簧&x27;s Gradle propdeps插件未按预期运行,plugins,gradle,multi-module,Plugins,Gradle,Multi Module,我遇到过。起初它看起来很棒 我在root build.gradle文件中定义了以下内容 allprojects { apply plugin: 'maven' apply plugin: 'propdeps' apply plugin: 'propdeps-maven' apply plugin: 'propdeps-idea' ... configurations.provided.transitive = true configurati

我遇到过。起初它看起来很棒

我在root build.gradle文件中定义了以下内容

allprojects  {
    apply plugin: 'maven'
    apply plugin: 'propdeps'
    apply plugin: 'propdeps-maven'
    apply plugin: 'propdeps-idea'

...

    configurations.provided.transitive = true
    configurations.provided.visible = true
}
我有一个子模块(我们称之为
sub1
),其定义如下:

dependencies {
    provided(group: 'org.apache.hadoop', name: 'hadoop-core', version:'1.2.0') {
        exclude(module: 'slf4j-log4j12')
        exclude(module: 'log4j')
    }
...
}
以及依赖于第一个子模块的第二个子模块(我们称之为
sub2
):

dependencies {
    compile project(':sub1')

...
}
调用
sub2
clean build
任务时,出现以下错误:

/…/…/…/blahblah.java:12:error:package org.apache.hadoop.conf 不存在导入org.apache.hadoop.conf.Configuration

缺少的导入存在于
sub1的构建文件中提供的
范围中指定的jar中

我曾认为设置以下内容:

configurations.provided.transitive = true
configurations.provided.visible = true
就可以了(注意:这些道具没有任何价值)


插件是“坏了”还是我用错了?

提供的
依赖项是不可传递的
编译
依赖项。因此,毫不奇怪,
sub1
提供的
依赖项不会在
sub2
的编译类路径上结束。要解决这个问题,您需要同时声明
sub1
sub2
的依赖项(例如,通过在根构建脚本中的
subprojects{}
下声明它)。

似乎在编译时无法访问
提供的
范围。也许试着编译吧,这就是问题所在,我不想使用compile,因为它会超过将JAR标记为所提供(即,由框架提供,在本例中为hadoop…)的要求,谢谢!还有两个问题。第一个问题是:为什么声明
configurations.provided.transitive=true
没有预期的效果?第二个:在
子项目
下声明,需要两个项目位于同一层次结构中,对于层次结构相对较小且主题耦合的情况,这是很好的。但是如果我想在同一
settings.gradle
file?ad 1中未同时声明的两个项目之间实现相同的结果,该怎么办<代码>编译项目(':sub1')
编译项目(路径:':sub1',配置:'archives')
,sub2的
存档
配置未与其提供的
配置链接。这是为了防止
提供的
依赖项传播,这是它们的全部要点。公元2年。在两个项目中声明依赖项。