Gradle-Jar将Vue封装到Spark中
我正在将VUEUI与Spark Java后端捆绑在一起Gradle-Jar将Vue封装到Spark中,gradle,vue.js,packaging,spark-framework,Gradle,Vue.js,Packaging,Spark Framework,我正在将VUEUI与Spark Java后端捆绑在一起这两个模块都是独立构建的,使用以下结构可以很好地工作: project +-- backend | +-- src | | +-- main | | +-- resources | | +-- public <= Where the jar is picking the static files | +-- build | +-- lib
这两个模块都是独立构建的,使用以下结构可以很好地工作:
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正在复制文件,但在创建jar之后。换句话说,我必须创建两次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) }
}
}
虽然您所做的对我来说似乎是合乎逻辑的(并且没有bug),但我认为gradle没有理由不等到复制完成。不过,我可以建议你稍微改变一下吗 您可以在
from
块中直接指示jar
任务从./ui/dist
加载文件。这样,您就不必将任何内容复制到public
dir
jar {
// ...
from( '../ui/dist')
}
这更好,因为public
可以保持生成代码的干净(通过构建ui项目),并且可以节省复制时间(以及由此产生的潜在问题)
最后使
jar
taskdependsOn
成为UI项目的构建任务,这样最新的dist就可以在/UI/dist
中找到,我能想到的一件事是添加cp任务,将UI/dist
文件夹中的所有文件复制到backend/src/main/resources
文件夹中,你有什么样的项目可以玩吗?@chenrui我这么做了,但结果有点随机,好像jar正在触发副本,但没有等待它完成。你可以使用任务依赖性来确保排序。@chenrui这正是我尝试的。你能用一个例子来回答吗?差不多。所有资源最终都位于jar根目录中。我可以为这个特定的文件集指定一个“to”吗?您是否尝试了类似于jar{into('.''.'){from'.'.'.''.'}}
,请注意into
块中的from
。也许可以看到答案
jar {
// ...
from( '../ui/dist')
}