【问题标题】:How do you add dependency to a Pharo image?如何将依赖项添加到 Pharo 图像?
【发布时间】:2018-10-13 16:19:24
【问题描述】:

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

【问题讨论】:

    标签: smalltalk pharo seaside pharocloud pharo-6


    【解决方案1】:

    对不起,我不完全理解你的问题。如果您的意思是如何定义一个项目(可以具有依赖项等),例如您将使用 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.
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多