Gradle从单个源文件夹生成多个JAR文件

10 浏览
0 Comments

Gradle从单个源文件夹生成多个JAR文件

目前,我们有一个项目结构,只有一个名为src的源代码文件夹,其中包含了三个模块的源代码。我想要做的是:

1)编译源代码。可以通过定义sourceSets来轻松完成:

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
}

2)将编译结果放入三个jar文件中。我正在通过三个“jar”类型的任务来完成:

目前,我正在通过三个单独的任务来完成:

  • util.jar

    task utilJar(type: Jar) {
        from(sourceSets.main.output) {
            include "my/util/package/**"
        }
    }
    

  • client.jar

    task clientJar(type: Jar) {
        from(sourceSets.main.output) {
            include "my/client/package/**"
        }
    }
    

  • server.jar

    task serverJar(type: Jar) {
        from(sourceSets.main.output) {
            include "**"
        }
        excludes.addAll(utilJar.includes)
        excludes.addAll(clientJar.includes)
    }
    

问题在于server.jar应该包含所有不包含在client.jarutil.jar中的类。在ant构建脚本中,我们通过使用difference ant任务来解决这个问题。在gradle中如何实现这一点(我目前的方法不起作用)?

也许我的方法完全错误。请给予建议。

P.S. 目前我们不能更改项目源代码文件夹的结构。

0