gpt4 book ai didi

dependencies - Gradle 项目取决于兄弟项目创建的工件

转载 作者:行者123 更新时间:2023-12-03 22:30:06 26 4
gpt4 key购买 nike

我有四个项目的 Gradle 设置,一个有三个 child 的父级,其中一个 Java Servlet JSON“后端”被内置到一个 war 文件中,然后一个静态的 HTML5“前端”使用它被内置到一个 zip 中。这两个都将他们的工件“安装”到本地 maven 存储库。

第三个兄弟项目“合并”依赖于这两个工件,通过简单地“将它们压缩在一起”来构建“合并” war 。

但是,一旦我按预期启动并运行它,我显然必须通过从本地存储库中删除工件来测试引导方案。

现在我突然收到“找不到工件‘no.company:frontend:1.0-SNAPSHOT@zip’”。

是否不可能依赖于 的工件?将生产按当前版本?

编辑:

基于另一个想法(以及 Peter 不鼓励这种 Maven 逻辑的回复),这个版本看起来很有希望,而不是遍历 Maven(注意:它有效!):

// ## From frontend's build.gradle:
task zipFrontend(dependsOn: 'buildFrontend', type: Zip) {
from ('dist/')
}

// ## From backend's build.gradle:
apply plugin: 'war'

// ## From merger's build.gradle:
task mergeFrontAndBack(dependsOn: [':backend:war',
':frontend:zipFrontend'], type: War) {
from zipTree(project(':frontend').tasks['zipFrontend'].archivePath)
from zipTree(project(':backend').tasks['war'].archivePath)
destinationDir(buildDir)
}

编辑2:

根据彼得关于不涉及 sibling 项目结构的评论和他的具体建议,这是最终的作品(注意:它有效!):
// ## From frontend's build.gradle:
task zipFrontend(dependsOn: 'buildFrontend', type: Zip) {
from ('dist/')
}
configurations { zip }
artifacts { zip zipFrontend }

// ## From backend's build.gradle:
apply plugin: 'war'
configurations { jsonOnlyWar }
artifacts { jsonOnlyWar war }

// ## From merger's build.gradle:
configurations { merge }
dependencies {
merge project(path: ':backend', configuration: 'jsonOnlyWar')
merge project(path: ':frontend', configuration: 'zip')
}
task mergeFrontAndBack(dependsOn: configurations.merge, type: War) {
from { configurations.merge.collect { zipTree(it) } }
destinationDir(buildDir)
}

最佳答案

本地 Maven 存储库(和 Gradle 的 install 任务)应该只在与 Maven 构建交换工件时使用。它并不意味着用于在 Gradle 构建的项目之间交换工件,并且不会自动安装到本地 Maven 存储库中。

相反,merger需要声明对另外两个项目的项目依赖。例如:

configurations {
merge
}

dependencies {
merge project(":frontend"), project(":backend")
}

task merge(type: Zip) {
from { configurations.merge.collect { zipTree(it) } }
}

这假设 frontendbackend正确声明他们的工件。 (这可能会自动发生,例如,如果使用了 war 插件。)

您可以在 Gradle User Guide 中找到更多相关信息。 ,特别是多项目构建章节。

关于dependencies - Gradle 项目取决于兄弟项目创建的工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875576/

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