我使用Gradle Java插件,并具有以下源代码结构:

src/main/java/package1/
src/main/java/package2/

我想为每个包目录创建两个源jar,即
myproject-package1-sources-1.0.jar
myproject-package2-sources-1.0.jar

我可以使用以下方法为整个项目创建源jar:
task sourcesJar(type: Jar, dependsOn: classes) {
  classifier = 'sources'
  from sourceSets.main.allSource
}

artifacts {
   archives sourcesJar
}

如何为两个具有适当名称的项目创建源jar?

编辑:可能是package1和package2更深一些
src/main/java/a/b/e/package1/
src/main/java/x/y/z/package2/

也可能有多个package1和2,例如:
src/main/java/a/b/e/package1/
src/main/java/qwer/package1/
src/main/java/x/y/z/package2/

我希望名为packages1的文件夹中的所有文件和后续文件都将其包含在第一个源jar中,而将其包含在其他软件包中。

最佳答案

这个问题与我刚才在这里回答的问题非常相似:https://stackoverflow.com/a/29946192/950427
由于您在“相同”模块中有“两个”项目,或者根本没有模块,因此需要手动“指定”所需的目录。
您将需要以下内容:

task project1(type: Copy) {
    from('build/classes/main/package1/')

    into('another directory/')
    include('classes.jar')
}

task project2(type: Copy) {
    from('build/classes/main/package2/')

    into('another directory/')
    include('classes.jar')
}

10-06 02:18