我正在尝试在Pharo中开发一个简单的项目,我想在Metacello中添加它的依赖项.我的项目取决于Glamour,Roassal和 XMLSupport. 一种干净地安装我的项目的方法是首先手动安装依赖项.按照Deep into Ph
一种干净地安装我的项目的方法是首先手动安装依赖项.按照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,也许您想考虑使用它.