2016-04-18 44 views
2

使用其他模块的资源我有项目A和项目B如何模块可以使用gradle这个多模块

项目的单位testings(测试目录下)需要使用资源文件,这在项目b主/资源DIR。

gradle.build上项目答:项目B

dependencies { 
.. testCompile project(':web') 
} 

gradle.build:

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

仍然失败。 我不知道我错过了什么?

谢谢, 射线。

回答

3

当你在一个项目上添加一个依赖这样的:

testCompile project(':B') 

你依赖于项目B,这通常是默认的jar产生的默认神器。如果你想依赖于一个自定义的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') 
} 

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

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

它打印:

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

工作。谢谢。你能解释一下逻辑吗? – rayman

+1

增加了一些文字,让我知道如果这对你有意义。 – RaGe

+0

thx。你为什么不得不在配置{..}下包装它? – rayman

相关问题