gradle:任务之间的隐式依赖关系

问题描述 投票:0回答:2

我有以下 Gradle (kotlin-dsl) 项目布局

工具根
    |- 工具-ui // Reactjs
    |-tools-main // springboot

在创建

tool-ui/build
springboot jar 之前,需要将
tools-main/build/resources/main/static
目录复制到
tools-main
目录。创建以下任务和依赖项是为了在
tools-main/build.gradle.kts

中实现此目的
// Copy WebUI build to SpringBoot Jar
val copyWebUi = tasks.register<Copy>("copyWebUi") {
   
    dependsOn(tasks.getByPath(":tools-ui:build"))

    from(project(":tools-ui").layout.buildDirectory)
    into(layout.buildDirectory.dir("resources/main/static/simconfig"))
}

tasks.getByName<BootJar>("bootJar") {
    dependsOn(copyWebUi)
}

但是在构建过程中它会给出以下警告。

> 任务:tools-main:copyWebUi
由于以下原因,已禁用任务“:tools-main:copyWebUi”的执行优化以确保正确性:
  - Gradle 检测到以下位置存在问题:'C: ools-root ools-main uild
esources\main\static\simconfig'。 
    原因:任务“:tools-main:bootJarMainClassName”使用任务“:tools-main:copyWebUi”的此输出,而没有声明显式或隐式依赖项。 
    这可能会导致产生不正确的结果,具体取决于任务的执行顺序。 
    有关此问题的更多详细信息,请参阅 https://docs.gradle.org/7.3.3/userguide/validation_problems.html#implicit_dependency。

> 任务:tools-main:bootJar
> 任务:tools-main:inspectClassesForKotlinIC

> 任务:tools-main:jar
由于以下原因,已禁用任务“:tools-main:jar”的执行优化以确保正确性:
  - Gradle 检测到以下位置存在问题:'C: ools-root ools-main uild
资源\主要'。 
    原因:任务“:tools-main:jar”使用任务“:tools-main:copyWebUi”的此输出,而没有声明显式或隐式依赖项。 
    这可能会导致产生不正确的结果,具体取决于任务的执行顺序。 
    有关此问题的更多详细信息,请参阅 https://docs.gradle.org/7.3.3/userguide/validation_problems.html#implicit_dependency。

如何解决这个错误?
我不确定我是否理解错误消息中提供的链接中的任何内容。

reactjs spring-boot gradle gradle-kotlin-dsl
2个回答
1
投票

我找到了另一种方法来使用 Springboot gradle 插件的 BootJar 任务来解决此错误。

// Copy WebUI build to SpringBoot Jar
tasks.getByName<BootJar>("bootJar") {
    dependsOn(":tools-ui:build")
    from(project(":tools-ui").buildDir) {
        into("BOOT-INF/classes/static/")
    }
}

此任务配置将直接将UI构建文件复制到springboot应用程序jar中。并且这不会发出“隐式依赖项”警告。


0
投票

在您的

build.gradle
文件中添加此地图功能

tasks.configureEach { if (it.getName() == 'bootJarMainClassName'){ 取决于('copyWebUi') } }

这个解决方案效率不高(因为它检查所有任务),但它对我来说很好用并且节省了我的时间。

您可以在这里阅读更多有关任务的内容https://docs.gradle.org/current/userguide/partr6_writing_tasks.html

© www.soinside.com 2019 - 2024. All rights reserved.