代码之家  ›  专栏  ›  技术社区  ›  ludo

如何为Pharo映像添加依赖关系?

  •  5
  • ludo  · 技术社区  · 6 年前

    在使用Seaside构建了一个应用程序之后,我设法使用iceberg将Pharo图像代码推送到GitHub。我能在一台新机器上把它复制成一个新的法老图像。但是,将包加载到映像中似乎会生成一个错误,请求一些seaside依赖项。我仍然不理解向Pharo映像添加依赖项的概念。谁能给我解释一下怎么做吗?我需要它的代码部署和协作。

    1 回复  |  直到 6 年前
        1
  •  3
  •   EstebanLM    6 年前

    对不起,我不完全理解你的问题。如果你的意思是如何定义一个项目(它可以有依赖关系,等等),就像你用maven那样,你需要定义一个基线。

    基线是一个类(和一个包),您需要用源代码定义并保存它。以这个为例: https://github.com/estebanlm/logger/blob/master/src/BaselineOfLogger/BaselineOfLogger.class.st

    我将分部分解释:

    BaselineOfLogger 继承的 BaselineOf 并放在一个与基线同名的包中(这一点很重要,以便工具以后找到它)。

    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.
    

    这差不多是那样。但是请注意,声明依赖关系是一个复杂的问题(无论您使用哪种语言),我所做的示例将只涵盖最基本的内容。

    推荐文章