我将在这里发布我的工作解决方案作为答案(在gradle的论坛上有一个提示)。
gradle中的作用域非常奇怪:)我认为每个任务定义都会创建一个“任务”类的对象,在这种特定情况下,它类似于“
JarTask”。然后,我可以从build.gradle脚本中的任何位置访问该类的任何属性。但是,我找到了唯一可以看到模式的位置,这些模式包含在jar文件中-在
from一个任务块内。因此,我目前的工作解决方案是:
1)定义项目级集合以包含要从中排除的模式
server.jar
2)排除任务
from块中的所有模式
serverJar。
请在下面查看最终版本
sourceSets { main { java { srcDir 'src' } } }// holds classes included into client.jar and util.jar, so they are to be excluded from server.jarext.serverExcludes = []// util.jartask utilJar(type: Jar) { from(sourceSets.main.output) { include "my/util/package/**" project.ext.serverExcludes.addAll(includes) } }// client.jartask clientJar(type: Jar) { from(sourceSets.main.output) { include "my/client/package/**" project.ext.serverExcludes.addAll(includes) } }// server.jartask serverJar(type: Jar) { from(sourceSets.main.output) { exclude project.ext.serverExcludes } }


