我想在 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.
然后我的项目将正常工作。
我试图创建一个
ConfigurationOfMyProject
使用 Versionner,我添加了 Glamour、Roassal 和 XMLSupport 作为依赖项,使用当前安装在我的镜像中的版本(分别为 2.6-snapshot、1.430 和 1.2.1)。问题是我无法在新图像中使用 Metacello 加载我的项目。该项目加载良好,但每当我尝试加载我的类时,我都会在 Glamour 中遇到方法丢失错误。此外,很明显有些不同,因为即使是世界菜单也有不同的条目。
我尝试过其他版本的组合,包括使用稳定版 Glamour (2.1),但我遇到了更多错误,包括甚至无法在 Versioner 中打开项目(它提示缺少 Roassal 名称)。
干净地添加这些依赖项的正确方法是什么?
最佳答案
首先,我想强调的是,如果配置在类 ConfigurationOf#configuration
加载它。信息:Gofer new
smalltalkhubUser: 'Moose' project: 'Glamour';
configuration;
load.
(Smalltalk at: #ConfigurationOfGlamour) perform: #loadDefault.
A 我没有看到你的项目,我只能建议你手工编写配置。有一个简单的教程叫做 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,也许您想考虑使用它。
关于dependency-management - 法罗依赖 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683474/