You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle的smithyBuild任务中设置SMITHY_DEPENDENCY_MODE复用依赖模型

问题

如何为smithyBuild Gradle任务覆盖SMITHY_DEPENDENCY_MODE变量,以允许从其他包导入Smithy类型?

目标

我有两个API Smithy模型包,希望第二个“child-api-models”能够复用第一个“parent-api-models”中的通用Smithy类型。

已做的调研与测试

Smithy官方文档指出,可通过更新smithy-build.json文件添加Maven依赖和仓库来实现跨包模型导入,文档说明:

定义构建模型所需的Java Maven依赖。依赖用于引入模型导入、构建插件、验证器、转换及其他扩展。

但我在build.gradle.kts和smithy-build.json文件中添加父Smithy模型包作为依赖后,执行gradle build时smithyBuild任务失败,报错:

Task :smithyBuild FAILED
Running smithy build
SMITHY_DEPENDENCY_MODE is set to 'forbid', but the following Maven dependencies are defined in smithy-build.json: [REDACTED]. Dependencies are forbidden in this configuration.

SMITHY_DEPENDENCY_MODE未出现在Smithy公开文档中,但通过代码搜索可知,它接受的值为“forbid”、“standard”或“ignore”,其中“standard”是允许从依赖中导入Smithy模型的正确值。

我尝试了以下操作,但均触发相同错误:

  • 执行gradle build前运行export SMITHY_DEPENDENCY_MODE="standard"
  • 运行SMITHY_DEPENDENCY_MODE="standard" gradle build
  • 在gradle.properties中添加SMITHY_DEPENDENCY_MODE="standard"
  • 在build.gradle.kts中添加以下配置:
tasks.named("smithyBuild") {
  doFirst {
    System.setProperty("SMITHY_DEPENDENCY_MODE", "standard")
  }
}

若在doFirst块中使用environment("SMITHY_DEPENDENCY_MODE", "standard"),则会出现编译错误:

Script compilation error:
Line 121: environment("SMITHY_DEPENDENCY_MODE", "standard")

^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:

            public inline fun <T : AbstractExecTask<*>> AbstractExecTask<TypeVariable(T)>.environment(vararg environmentVariables: Pair<String, Any?>): TypeVariable(T) defined in org.gradle.kotlin.dsl

            public inline fun JavaExec.environment(vararg environmentVariables: Pair<String, Any?>): JavaExec defined in org.gradle.kotlin.dsl

            public inline fun Test.environment(vararg environmentVariables: Pair<String, Any?>): Test defined in org.gradle.kotlin.dsl

            public inline fun ProcessForkOptions.environment(vararg environmentVariables: Pair<String, Any?>): ProcessForkOptions defined in org.gradle.kotlin.dsl

跨包共享Smithy模型应该是常见场景,希望能找到遗漏的解决关键点。


内容的提问来源于stack exchange,提问作者Mark Sayson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:45:15