从另一个项目中选择一个包

时间:2014-10-22 11:50:47

标签: gradle

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

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

我在projectB中使用以下配置:

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

在为projectB生成的JAR中,我现在拥有来自projectA的所有类,但我不知道 如何排除不需要的类(或仅包含带有此类的packageA)。

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

Uwe /德国

2 个答案:

答案 0 :(得分:2)

你可以像@Opal那样说并将它拆分成单独的项目用于依赖关系,或者如果你只想保留2个项目而只依赖于某些类,那么将projectB的依赖项放到生成的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
}

然后在projectB中,您可以依赖生成的工件:

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

这适用于任何类型的生成类,因此您可以使用“extendsFrom testRuntime”和“from sourceSets.test.output”,并包含测试类的路径,如果它是您想要依赖的测试输出关系而不是main类。

答案 1 :(得分:0)

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