如何为Pharo图像添加依赖?

lud*_*udo 5 smalltalk seaside pharo pharocloud pharo-6

在使用Seaside构建应用程序后,我设法使用冰山将我的Pharo图像代码推送到GitHub.我能够在新机器上将其克隆到新的Pharo图像中.但是,将包加载到图像中似乎会产生一个错误,要求一些海边依赖项.我仍然不理解向Pharo图像添加依赖项的概念.有人可以向我解释如何去做吗?我需要它来进行代码部署和协作.

Est*_*nLM 3

抱歉,我不完全理解你的问题。如果您的意思是如何定义一个项目(可以有依赖项等),就像您使用 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' ].   
]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这个方法为 Pharo 定义了一个“规范”: - 它将加载beacon项目(我们稍后会看到) - 它声明它将加载包Logger

该方法beacon:定义如下:

BaselineOfLogger >> beacon: spec [
    spec 
        baseline: 'Beacon'
        with: [ spec repository: 'github://pharo-project/pharo-beacon/repository' ]
]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它指向另一个项目(和另一个基线)。现在,由于您需要Seaside,您的 Baseline 可能看起来像这样:

BaselineOfMyProject >> baseline: spec [
    <baseline>

    spec for: #pharo do: [
        spec 
            baseline: 'Seaside3'
            with: [ 
                spec repository: 'github://SeasideSt/Seaside:v3.2.4/repository' ]
        spec package: 'MyPackage' ].    
]
Run Code Online (Sandbox Code Playgroud)

最后,在您的图像中,要加载您将执行以下操作:

Metacello new 
    repository: 'github://yourname/yourprojectname/src';
    baseline: 'MyProject';
    load.
Run Code Online (Sandbox Code Playgroud)

这或多或少是这样的。但请注意,声明依赖关系是一件复杂的事情(无论您使用哪种语言),我制作的示例将仅涵盖非常基础的内容。