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

Gradle 从另一个项目中选择一个包,gradle,Gradle,我有一个gradle多项目。 在projectA中,我有一个带有一些类的包(和一些其他包,仅在projectA中使用) 在另一个projectB中,我只想使用projectA中的packageA 我在projectB中使用以下配置: dependencies { compile project(':ProjectA') // I understand, this is to much } 在为projectB生成的JAR中,我现在拥有projectA中的所有类,但我不知道

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

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

我在projectB中使用以下配置:

dependencies {
    compile project(':ProjectA')       // I understand, this is to much
}
在为projectB生成的JAR中,我现在拥有projectA中的所有类,但我不知道 如何排除不需要的类(或仅包括包含此类的packageA)

谁能帮我,如何配置。 谢谢


Uwe/德国

您尝试进行的这种类过滤不是一个好主意。相反,将需要在
A
B
中使用的类/包分开,以投影
C
(或
common
)并将其作为依赖项添加到两个项目中

您可以按照@Opal所说的操作,并将其拆分为独立的项目,以建立依赖关系,或者如果您确实希望只保留两个项目,并且只依赖其中一些类,则将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')
}

这适用于任何类型的生成类,因此您可以使用“ExtendFrom testRuntime”和“from SourceSet.test.output”,如果您希望依赖测试输出关系而不是主类,则可以包含测试类的路径。

谢谢,这非常适合我。我以前见过类似的例子,但无法正确创建customJar任务。Thanks@ula.uvula很高兴我能帮忙,我花了一段时间才弄清楚它是如何工作的。如果你很高兴这对你有用,你能接受这个问题吗