模块如何使用gradle多模块来使用另一个模块的资源

时间:2016-04-18 16:18:57

标签: android gradle build.gradle

我有项目A和项目B

项目单元测试(在测试目录下)需要使用项目B main / resources目录下的资源文件。

项目A上的

gradle.build:

dependencies {
..    testCompile project(':web')
}
项目B上的

gradle.build:

task testJar(type: Jar) {
    classifier 'resources'
    from sourceSets.main.resources
}

仍然失败。 我不确定我错过了什么?

谢谢你, 射线。

1 个答案:

答案 0 :(得分:3)

在这样的项目中添加依赖项时:

testCompile project(':B')

你取决于项目B产生的默认工件,它通常是默认的jar。如果你想依赖自定义jar,比如测试jar,资源jar或胖罐,你必须明确指定。您可以将自定义工件添加到配置中,并依赖于配置,如下所示:

在B的build.gradle中:

configurations {
  foo
}

task testJar(type: Jar) {
    classifier 'resources'
    from sourceSets.main.resources
}

artifacts {
  foo testJar
}

然后在A中使用它:

dependencies{
    testCompile project(path: ':B', configuration: 'foo')
}

要验证,您可以将此任务添加到A:

task printClasspath()<<{
    configurations.testCompile.each{println it}
}

打印:

${projectRoot}\B\build\libs\B-resources.jar