如何添加对Pharo图像的依赖关系?

时间:2018-10-13 16:19:24

标签: smalltalk pharo seaside pharocloud pharo-6

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

1 个答案:

答案 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.

或多或少都是这样。但是请注意,声明依赖关系是一件很复杂的事情(无论您使用哪种语言),而我所举的示例将仅涉及最基本的内容。