64 本地依赖
应用通过 module.norm 声明对 library 的直接依赖。先把独立的库模块打包到本地包仓库,再运行消费者;应用只需要依赖声明和公开的 Greeting 类型。
库模块描述:
norm
Module module() {
return module(name: "library", version: 1, exports: ["model.Greeting"])
}公开类型:
norm
package library.model
public value Greeting {
public String text
}消费者模块描述:
norm
Module module() {
return module(
name: "app",
version: 1,
exports: ["Main"],
dependencies: [dependency(repository: "github", name: "library", version: 1)]
)
}消费者入口:
norm
package app
import library.model.Greeting
main() {
Greeting greeting = Greeting(text: "Norm")
printLine(greeting.text)
}从仓库根目录准备本地包并运行(--output 是本机的 Norm 包缓存目录):
sh
norm package norm/tests/docs/dependency/producer/library/module.norm --output "$HOME/.norm/cache/packages"
norm run norm/tests/docs/dependency/app/Main.norm预期输出:
text
Norm库项目放在消费者源树之外。自动验收还会将消费者复制到没有库源码的目录,以确认运行时使用打包依赖。
动手试试:修改库中的问候文本,重新打包,再运行消费者观察新结果。
精确规则:模块与依赖。