如何将依赖项添加到 Pharo 图像?
How do you add dependency to a Pharo image?
使用 Seaside 构建应用程序后,我设法使用 iceberg 将我的 Pharo 图像代码推送到 GitHub。我能够将它克隆到新机器上的新 Pharo 图像中。但是,将包加载到图像中似乎会产生错误,请求一些 seaside 依赖项。我仍然不明白向 Pharo 图像添加依赖项的概念。有人可以向我解释如何去做吗?我需要它来进行代码部署和协作。
对不起,我不完全理解你的问题。如果你的意思是你如何定义一个项目(它可以有依赖关系等),就像你用 maven 做的那样,你需要定义一个基线。
基线是一个 class(和一个包),您需要定义它并与您的源一起保存。以这个为例:https://github.com/estebanlm/logger/blob/master/src/BaselineOfLogger/BaselineOfLogger.class.st
(这是我找到的最小的例子,项目本身也不是很有趣)
我会分几部分解释:
你有一个名为 BaselineOfLogger
的 class 继承自 BaselineOf
并放置在与基线同名的包中(这很重要,工具可以找到稍后)。
你定义了一个用编译指示 baseline
标记的方法(编译指示有点像注解):
BaselineOfLogger >> baseline: spec [
<baseline>
spec for: #pharo do: [
self beacon: spec.
spec package: 'Logger' ].
]
如您所见,此方法为 Pharo 定义了一个 "spec":
- 它将加载 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.
这或多或少是这样的。但请注意,声明依赖项是一件复杂的事情(无论您使用何种语言),我所做的示例将涵盖最基础的内容。
使用 Seaside 构建应用程序后,我设法使用 iceberg 将我的 Pharo 图像代码推送到 GitHub。我能够将它克隆到新机器上的新 Pharo 图像中。但是,将包加载到图像中似乎会产生错误,请求一些 seaside 依赖项。我仍然不明白向 Pharo 图像添加依赖项的概念。有人可以向我解释如何去做吗?我需要它来进行代码部署和协作。
对不起,我不完全理解你的问题。如果你的意思是你如何定义一个项目(它可以有依赖关系等),就像你用 maven 做的那样,你需要定义一个基线。
基线是一个 class(和一个包),您需要定义它并与您的源一起保存。以这个为例:https://github.com/estebanlm/logger/blob/master/src/BaselineOfLogger/BaselineOfLogger.class.st
(这是我找到的最小的例子,项目本身也不是很有趣)
我会分几部分解释:
你有一个名为 BaselineOfLogger
的 class 继承自 BaselineOf
并放置在与基线同名的包中(这很重要,工具可以找到稍后)。
你定义了一个用编译指示 baseline
标记的方法(编译指示有点像注解):
BaselineOfLogger >> baseline: spec [
<baseline>
spec for: #pharo do: [
self beacon: spec.
spec package: 'Logger' ].
]
如您所见,此方法为 Pharo 定义了一个 "spec":
- 它将加载 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.
这或多或少是这样的。但请注意,声明依赖项是一件复杂的事情(无论您使用何种语言),我所做的示例将涵盖最基础的内容。