Ammonite:如何从Ivy依赖调用其他脚本?打包调用遇错求助
解决Ammonite脚本导入语法错误的问题
你遇到的这个'.' expected but eof found错误,是因为导入本地脚本时没有遵循Ammonite的语法规则导致的。
问题根源
你的导入语句把Ivy依赖和本地脚本混在一起,但本地脚本的导入必须用$file前缀来标识,你直接写local_build的写法让解析器无法正确识别语法结构,进而抛出了语法错误。
修正后的脚本示例
你可以选择两种方式修正导入逻辑:
方式1:拆分导入语句
import $ivy.`mycompany:myproject_2.12:2.1.0-SNAPSHOT` import $file.local_build @main def doit(): Unit = println(local_build.curl("http://localhost:8080"))
方式2:同一行内组合正确导入
import $ivy.`mycompany:myproject_2.12:2.1.0-SNAPSHOT`, $file.local_build @main def doit(): Unit = println(local_build.curl("http://localhost:8080"))
额外注意事项
- 确保
local_build.sc和你的sol_local_build.sc在同一目录下,如果不在同目录,需要给$file补充相对或绝对路径(比如$file./scripts/local_build)。 - 若要将脚本打包为JAR交付,可使用
amm --compile sol_local_build.sc命令生成可执行JAR,这样其他项目调用时就能正确包含所有依赖和脚本逻辑。
内容的提问来源于stack exchange,提问作者pme




