gradle:定制jar任务
我觉得我错过了一些明显的东西,但我似乎找不到 我有一个项目,我希望我的包结构是这样的gradle:定制jar任务,jar,gradle,Jar,Gradle,我觉得我错过了一些明显的东西,但我似乎找不到 我有一个项目,我希望我的包结构是这样的 /src /webapp /webapp-package-1 /webapp-package-2 /iface /iface-package-1 /iface-package-2 我想定义一个任务,将iface的类打包成一个jar。所以我在这里遵循了用户指南:(我使用的是0.8版) 我现在有这个 sourceSets {
/src
/webapp
/webapp-package-1
/webapp-package-2
/iface
/iface-package-1
/iface-package-2
我想定义一个任务,将iface的类打包成一个jar。所以我在这里遵循了用户指南:(我使用的是0.8版)
我现在有这个
sourceSets {
main {
java {
srcDir 'src'
}
resources {
srcDir 'src'
}
}
intTest {
java {
srcDir 'src/iface/'
}
resources {
srcDir 'src'
}
}
test {
java {
srcDir 'test'
}
resources {
srcDir 'src'
}
}
}
task intTestJar(type: Jar, dependsOn: intTestClasses) {
from sourceSets.intTest.classes
}
并且可以验证intTest
中的类是否在/build/classes/intTest
中正确构建。但是,尝试调用intTestJar
总是会给我以下警告:
[ant:jar] Warning: skipping jar archive C:\workspace\foo\build\libs\foo-1.0.jar because no files were included.
我不明白这一点,因为类正在成功创建。另外,完整构建任务成功地创建了整个jar
想法?此解决方案似乎适用于最新版本的Gradle(0.9.2)。我在这个文件树上运行了如上所示的intTestJar任务(当然是添加java插件):
└── iface
└── ifacePackageOne
├── Test.java
└── testFile.txt
下面是最终的jar结构:
├── META-INF
│ └── MANIFEST.MF
└── iface
└── ifacePackageOne
├── Test.class
└── testFile.txt
因此,简单的答案是——尝试更新版本的Gradle 开枪。我希望一直使用.8直到1.0版本,因为有一些小的语法变化,我们已经有一些使用gradle的项目,如果我的团队升级到.9,这些项目将需要更新,同时跨两个gradle版本不是很容易。但这可能会迫使我越界。谢谢。卢卡斯:考虑使用渐变包装纸。它应该让你不必太担心版本和升级。我可能错了,但你的项目似乎是一个多项目渐变配置的好候选人?