我正在尝试在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,也许您想考虑使用它.
