smalltalk - 如何将依赖项添加到 Pharo 图像?
问题描述
在使用 Seaside 构建应用程序后,我设法使用 iceberg 将我的 Pharo 图像代码推送到 GitHub。我能够将它克隆到新机器上的新 Pharo 映像中。但是,将包加载到图像中似乎会产生错误,请求一些海边依赖项。我仍然不明白向 Pharo 图像添加依赖项的概念。有人可以向我解释如何去做吗?我需要它来进行代码部署和协作。
解决方案
对不起,我不完全理解你的问题。如果您的意思是如何定义一个项目(可以具有依赖项等),例如您将使用 maven 做的事情,您需要定义一个基线。
基线是您需要定义并与源一起保存的类(和包)。以此为例:https ://github.com/estebanlm/logger/blob/master/src/BaselineOfLogger/BaselineOfLogger.class.st
(这是我找到的最小的例子,项目本身也不是很有趣)。
我将分部分解释:
您有一个名为的类BaselineOfLogger
,它继承BaselineOf
并放置在与基线同名的包中(这很重要,以便工具稍后找到它)。
您定义了一个用 pragma 标记的方法baseline
(pragma 有点像注释):
BaselineOfLogger >> baseline: spec [
<baseline>
spec for: #pharo do: [
self beacon: spec.
spec package: 'Logger' ].
]
如您所见,此方法为 Pharo 定义了一个“规范”:-它将加载beacon
项目(我们稍后会看到)-它声明它将加载包Logger
。
该方法beacon:
定义如下:
BaselineOfLogger >> beacon: spec [
spec
baseline: 'Beacon'
with: [ spec repository: 'github://pharo-project/pharo-beacon/repository' ]
]
如您所见,它指向另一个项目(和另一个基线)。现在,既然你需要Seaside
,你的基线可能看起来像这样:
BaselineOfMyProject >> baseline: spec [
<baseline>
spec for: #pharo do: [
spec
baseline: 'Seaside3'
with: [
spec repository: 'github://SeasideSt/Seaside:v3.2.4/repository' ]
spec package: 'MyPackage' ].
]
最后,在您的图像中,要加载您将执行以下操作:
Metacello new
repository: 'github://yourname/yourprojectname/src';
baseline: 'MyProject';
load.
这或多或少是这样的。但请注意,声明依赖关系是一件复杂的事情(无论您使用哪种语言),我所做的示例将仅涵盖最基本的内容。
推荐阅读
- javascript - 根据chartjs中的csv文件添加数据集
- c - 有什么方法可以不丢失精度并仍然获得价值?
- aws-glue - 有没有办法通过将包存储在 s3 位置来运行胶水作业而无需每次都安装所需的包
- javascript - 当斐波那契数列达到大于 1000 的数字时停止
- python-3.x - Pandas 使用 iterrows 根据数据框列中的值创建具有团队名称的 csv 文件
- jdbc - 查看死信队列的标题
- flutter - 点击时大图 - 颤动
- php - 如何在 PHP 中将二进制数据从文件流式传输到 POST 正文
- java - 如何将 Intellij Idea 用于大约 5M LOC 的非常大的代码库。IintelliJ 无需手动操作即可自动理解项目结构
- json - 在不转义字符串的情况下将 BigQuery 提取到换行符分隔的 JSON