2014-10-22 143 views
0

我有一个gradle多项目。 在projectA中,我有一个包含一些类的packageA(以及一些其他包,只在projectA中使用)。从另一个项目中选择一个包

在另一个projectB中,我只想使用projectA中的packageA。

我在项目B使用以下配置:

dependencies { 
    compile project(':ProjectA')  // I understand, this is to much 
} 

在为项目B生成的JAR我现在从了projectA所有的类,但我不知道 如何排除不需要的类(或仅包括包含这个类的packageA)。

有人可以帮助我,如何配置。 感谢

乌韦/德国

回答

1

为@Opal说,分裂出来为单独项目的依赖关系,或者如果你想保持仅有2项目,只能靠一些类,然后把一个依赖从项目B到你可以做像这样的了projectA产生假象:

在了projectA在其中创建神器:

configurations { 
    myCustom.extendsFrom runtime 
} 

task customJar(type: Jar) { 
    classifier "custom" 
    from sourceSets.main.output 
    // now the packages you want to include in the artifact 
    include 'com/your/domain/package1/*' 
    include 'com/your/other/stuff2/*' 
} 

artifacts { 
    myCustom customJar 
} 

,然后在项目B,你可以取决于生成的构件有:

dependencies { 
    compile project(path: ':projectA', configuration: 'myCustom') 
} 

这适用于任何类型的生成类的,所以你可以使用“extendsFrom testRuntime”和“从sourceSets.test.output”,并包含路径来测试类,如果这是你想要依靠的不是主类测试输出关系。

+0

不错,学到了东西;) – Opal 2014-10-22 19:12:43

+0

谢谢,这对我来说非常完美。我之前看到过类似的例子,但无法正确创建customJar任务。由于 – 2014-10-22 21:00:48

+0

@ ula.uvula高兴能帮上忙,我花了一段时间才能得到我的周围是如何工作的负责人。如果你对此感到高兴,你能否接受这个问题,请回答:) – 2014-10-23 07:59:22

0

这种类过滤你正在试图做的是不是一个好主意。而是将需要在AB中使用的类/程序包分隔到项目C(或common),并将其作为依赖项添加到两个项目中。

相关问题