[英]How do you create additional jar artifacts from compiled classes using Gradle?
我不知道这是Gradle 1.0m7的错误,还是我们只是做错了。
我们有一些类被编译为项目的一部分,我们希望将它们单独地放入它自己的工件中。 这些是例如我们想要与另一个项目共享的独立域模型对象。
我不想去多项目构建路线,那么我们如何告诉Gradle为这些创建另一个jar?
目前我们这样做:
task modelJar(type: Jar) {
classifier = 'model'
from fileTree(dir: sourceSets.main.classesDir).matching { include 'com/foo/bar/model/**' }
}
artifacts {
archives modeljar
}
这里的问题是modeljar任务在编译类之前运行。 起初我们没有意识到这一点,并认为这是有效的。 事实证明,工件正在从上一次运行中获取类,而不是当前运行。 在构建之前执行clean会导致jar中没有类,并显示问题。
我在看自定义配置,但它似乎相当复杂,我不想过度复杂的构建文件。
感谢任何建议。
谢谢。
最方便的方法是
task modelJar(type: Jar) {
classifier = 'model'
from sourceSets.main.output
include 'com/foo/bar/model/**'
}
一些背景知识:sourceSets.main.output是一个可构建的文件集合。 这意味着如果任务使用此文件集合,则gradle知道必须先创建此文件集合,然后其他任务才能使用它。 在这种特殊情况下,sourcesets.main.classes连接到java插件的classes任务。 因此,您的modelJar任务不需要明确依赖于类任务。
如何使modelJar
任务依赖于classes
(内置)任务? 这应该确保在modelJar
任务之前完成编译。
task modelJar(dependsOn: classes, type: Jar){
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.