没有错。如果您未指定任何项目间依赖关系,则Gradle将按字母顺序执行它们。如果这两个项目现在不相关,那应该没问题。
但是,假设您喜欢构建前端(使用节点),然后将那些资源包括在后端(使用Spring Boot)。然后,您将需要使后端取决于前端项目。然后Gradle将遵守依赖关系图并首先构建前端。
有很多方法可以做到这一点。一种是使用前端中的java
插件来构建前端资源的jar文件。然后,您可以对其进行常规项目依赖。您还可以直接将依赖项添加到前端项目的“内部”构建任务中,但这有点令人讨厌。或者,您可以声明自己的工件,或以其他多种方式进行加工。
对于第一种方法,您可以像这样构建前端资源的jar文件:
plugins {
// ...
id("java")
}
java {
// Required to make the jar artifact compatible with your backend,which is configured for Java 1.8
targetCompatibility = JavaVersion.VERSION_1_8
}
tasks.named("jar",Jar::class) {
dependsOn("assembleFrontend")
from("$buildDir/dist")
into("static")
}
然后在后端,像这样依赖它:
dependencies {
// ...
runtimeOnly(project(":frontend"))
}
您的构建脚本还存在其他一些问题。
- 不推荐使用
runtime
配置;改用runtimeOnly
(针对您的spring-boot-devtools依赖)。
- 一个多项目应该只有一个settings.gradle文件,但是每个项目中只有一个。删除它们,除了根文件夹中的一个。
- 您已经两次声明了
org.siouan.frontend
插件:一次是使用推荐的方式,一次是使用“旧”方式。删除后者(buildscript
块和apply
语句中的所有内容。
另外,尽管我对org.siouan.frontend
插件不熟悉,但它似乎并未为您声明输入和输出-可能是因为它非常通用。因此,为避免每次构建后端时都运行npm
(因为现在已经依赖于前端),应为installFrontend
和assembleFrontend
之类的前端任务声明正确的输入和输出。
本文链接:https://www.f2er.com/3151040.html