Как добавить зависимость к изображению Pharo?
После создания приложения с использованием Seaside мне удалось отправить свой код изображения Pharo на GitHub с помощью айсберга. Мне удалось клонировать его в новый образ Pharo на новой машине. Однако при загрузке пакета в образ возникает ошибка, запрашивающая некоторые зависимости от моря. Я до сих пор не понимаю концепцию добавления зависимости к изображению Pharo. Можно ли мне объяснить, как это сделать? Мне это нужно для развертывания кода и совместной работы.
1 ответ
Извините, я не совсем понимаю ваш вопрос. Если вы имеете в виду, как вы можете определить проект (который может иметь зависимости и т. Д.), То, что вы делаете, например, с maven, вам нужно определить базовую линию.
Базовая линия - это класс (и пакет), который вы должны определить и сохранить вместе с вашими источниками. Возьмем этот пример: https://github.com/estebanlm/logger/blob/master/src/BaselineOfLogger/BaselineOfLogger.class.st
(это самый маленький пример, который я нашел, а сам проект не очень интересен).
Я объясню это по частям:
У вас есть класс с именем BaselineOfLogger
что наследует BaselineOf
и помещается в пакет с тем же именем базовой линии (это важно, чтобы инструменты нашли его позже).
Вы определяете метод, помеченный прагмой baseline
(Прагмы немного похожи на аннотации):
BaselineOfLogger >> baseline: spec [
<baseline>
spec for: #pharo do: [
self beacon: spec.
spec package: 'Logger' ].
]
как вы можете видеть, этот метод определяет "спецификацию" для Pharo:
- он загрузит 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.
Это более или менее так. Но обратите внимание, что объявление зависимостей является сложным делом (независимо от того, какой язык вы используете), и пример, который я сделал, будет охватывать только самые основы.