使用Seaside构建应用程序后,我设法使用iceberg将Pharo图像代码推送到GitHub。我能够将其克隆到新机器上的新Pharo映像中。但是,将程序包加载到映像中似乎会产生错误,要求一些海边依赖项。我仍然不了解向Pharo图像添加依赖项的概念。可以给我解释一下如何去做吗?我需要它来进行代码部署和协作。
答案 0 :(得分:3)
对不起,我不完全理解您的问题。如果您是说如何定义一个项目(该项目可能具有依赖项等),那么像使用maven一样,您需要定义一个基准。
基线是您需要定义并与源一起保存的类(和程序包)。以这个为例:https://github.com/estebanlm/logger/blob/master/src/BaselineOfLogger/BaselineOfLogger.class.st
(这是我发现的最小示例,项目本身不是很有趣)。
我将分部分进行解释:
您有一个名为BaselineOfLogger
的类,该类继承了BaselineOf
并放置在与基线名称相同的包中(这对于以后查找工具很重要)。
您定义了一个用杂注baseline
标记的方法(杂注有点像注释):
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.
或多或少都是这样。但是请注意,声明依赖关系是一件很复杂的事情(无论您使用哪种语言),而我所举的示例将仅涉及最基本的内容。