gpt4 book ai didi

gradle - 将构建工件复制到Gradle多项目构建中的源集

转载 作者:行者123 更新时间:2023-12-03 03:18:21 25 4
gpt4 key购买 nike

我有一个由两个子项目组成的root gradle项目:

  • 由wepback bundle 的JS前端称为admin-frontend
  • Java Spring后端称为admin-backend
  • admin-frontend中的build任务运行webpack,该包将 bundle 发送到 admin-frontend/build/resources/static中。 admin-backend中的相应命令将编译Java应用程序。

    我需要gradle来:
  • 构建admin-frontend
  • admin-frontend/build/resources/static复制到admin-backend/src/main/resources/static
  • 构建admin-backend,以便构建将包括在第二步
  • 中复制的webpack bundle 包

    我该怎么办?

    这是目录结构:
    .
    ├── admin-backend
    │   ├── build
    │   ├── build.gradle
    │   ├── src
    │   ├── main
    │   ├── resources
    │   ├── static
    ├── admin-frontend
    │   ├── build
    │   │ ├── resources
    │   │ ├── static
    │   ├── build.gradle
    ├── build.gradle
    ├── gradle
    │   └── wrapper
    ├── gradlew
    ├── gradlew.bat
    └── settings.gradle

    最佳答案

    这是个有趣的问题。请不要以这个答案为权威,甚至不要以为会/可以的,但您可能想尝试一下。

    首先将静态资源声明为admin-frontend项目的输出-或artifact-。您应该可以使用以下类似的方法做到这一点:

    configurations {
    staticFiles
    }

    artifacts {
    staticFiles file("$buildDir/resources/static"), {
    builtBy build
    }
    }

    老实说,我在猜测上面的语法。同样,理想情况下,您将 file(...)替换为实际生成静态文件的任务或任务列表。请参阅 ArtifactHandler API文档中的示例。

    现在,您需要做的就是将该配置作为依赖项添加到后端项目中。就像是:
    configurations {
    frontEndResources
    }

    dependencies {
    frontEndResources project(path: ":path:to:admin-frontend", configuration: "staticResources")
    }

    然后,您应该能够使用 configurations.frontEndResources合并静态资源,但是您认为合适。例如,如果您想将它们包括在项目的JAR中:
    jar.from configurations.frontEndResources

    理想情况下,您可以将其配置为主要源集资源的一部分,但这似乎只能通过目录而不是文件集合来实现。我认为这是一种骇人听闻的方法:
  • 创建一个将静态资源复制到$ buildDir下的自定义目录的任务
  • 将该目录配置为主要源集(see second example in SourceSetOutput API doc)的输出-确保您将输出指定为builtBy,将步骤1中的任务指定为
  • 坐下来观看,Gradle将自动在admin-frontend中运行生成静态资源的任务,将这些资源复制到admin-backend,然后将其打包到结果应用程序中。换句话说,您应该在admin-frontendadmin-backend之间顺利进行增量构建。

  • 现在剩下要做的就是看看它是否真的有效:)

    关于gradle - 将构建工件复制到Gradle多项目构建中的源集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51672799/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com