我正在使用Spark Java后端捆绑Vue UI。
两个模块都是独立构建的,具有以下结构:
project
+-- backend
| +-- src
| | +-- main
| | +-- resources
| | +-- public <= Where the jar is picking the static files
| +-- build
| +-- libs <= Gradle Jar output
+-- ui
+-- dist <= Vue build output
在后端,Gradle正在将backend/src/main/resources/public
捆绑到Jar /public
中。因此,我将ui/dist
复制为backend/src/main/resources/public
作为jar
任务依赖项。
task copyUI(type: Copy) {
from( '../ui/dist')
into( 'src/main/resources/public')
}
jar.dependsOn( copyUI)
Gradle正在复制文件,但在创建jar后 换句话说,我必须创建两次才能使它正确。
如何指示Gradle在打包/公开之前等待复制完成
我的build.gradle
jar部分看起来像这样
jar {
manifest {
attributes(
'Main-Class': 'tld.domain.MainClass'
)
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
}
}
答案 0 :(得分:2)
虽然你所做的事情对我来说似乎合乎逻辑(并且没有错误),但我没有看到gradle不等到复制完成的原因。我可以建议做一点点不同。
您可以直接指示jar
任务从../ui/dist
块中的from
加载文件。这样,您就不必将任何内容复制到public
目录。
jar {
// ...
from( '../ui/dist')
}
这更好,因为public
可以保持生成代码的清理(通过构建ui项目)并节省复制时间(并且可能因此而产生问题)。
最后让jar
任务dependsOn
成为UI项目的构建任务,以便../ui/dist