当前位置 : 主页 > 手机开发 > 其它 >

依赖管理 – Pharo依赖地狱

来源:互联网 收集:自由互联 发布时间:2021-06-22
我正在尝试在Pharo中开发一个简单的项目,我想在Metacello中添加它的依赖项.我的项目取决于Glamour,Roassal和 XMLSupport. 一种干净地安装我的项目的方法是首先手动安装依赖项.按照Deep into Ph
我正在尝试在Pharo中开发一个简单的项目,我想在Metacello中添加它的依赖项.我的项目取决于Glamour,Roassal和 XMLSupport.

一种干净地安装我的项目的方法是首先手动安装依赖项.按照Deep into Pharo这本书可以做到

Gofer new
  smalltalkhubUser: 'Moose' project: 'Glamour';
  package: 'ConfigurationOfGlamour';
  load.
(Smalltalk at: #ConfigurationOfGlamour) perform: #loadDefault.

Gofer new smalltalkhubUser: 'ObjectProfile'
  project: 'Roassal';
  package: 'ConfigurationOfRoassal';
  load.
(Smalltalk at: #ConfigurationOfRoassal) load.

Gofer new
  squeaksource: 'XMLSupport'; 
  package: 'ConfigurationOfXMLSupport';
  load.
(Smalltalk at: #ConfigurationOfXMLSupport) perform: #loadDefault.

然后我的项目将正常工作.

我尝试使用Versionner创建ConfigurationOfMyProject,并使用当前安装在我的映像中的版本(分别为2.6-snapshot,1.430和1.2.1)添加了Glamour,Roassal和XMLSupport作为依赖项.

问题是我无法在新图像中使用Metacello加载我的项目.该项目加载正常,但每当我尝试加载我的类时,我得到方法缺少Glamour中的错误.此外,很明显有些东西是不同的,因为即使世界菜单也有不同的条目.

我尝试了其他版本的组合,包括使用稳定的Glamour(2.1),但我已经获得了更多错误,包括甚至无法在Versioner中打开项目(它抱怨缺少Roassal名称).

干净地添加这些依赖项的正确方法是什么?

首先,我想强调一下,如果配置在类ConfigurationOf< proj-name>中您可以使用#configuration消息加载它:

Gofer new
  smalltalkhubUser: 'Moose' project: 'Glamour';
  configuration;
  load.
(Smalltalk at: #ConfigurationOfGlamour) perform: #loadDefault.

我看不到你的项目,我可以建议你手工编写配置.有一个简单的教程叫做Dead simple intro to Metacello.

根据你的描述,它应该是这样的:

baseline01: spec 
  <version: '0.1'>

  spec for: #common do: [  
    spec blessing: #release.
    spec repository: 'your repo url'.

    spec 
      package: 'YourPackage' with: [
        spec requires: #('Glamour' 'Roassal' 'XMLSupport') ].
    "also maybe you have a couple of packages that depend on different projects"

    spec project: 'Glamour' with: [
      spec 
        className: 'ConfigurationOf Glamour';
        repository: 'http://smalltalkhub.com/mc/Moose/Glamour/main';
        version: #'2.6-snapshot' ].

    spec project: 'Roassal' with: [
      spec 
        className: 'ConfigurationOfRoassal';
        repository: 'http://smalltalkhub.com/mc/ObjectProfile/Roassal/main';
        version: #'1.430' ].

    "and same for XMLSupport" ].

此外,您可以尝试加载#development版本,因为我的印象是像Roassal和Glamour这样的项目已经过时了稳定的版本.另请注意,Roassal2正在积极开发并将取代Moose平台中的原始Roassal,也许您想考虑使用它.

网友评论