Как добавить зависимость к изображению 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.

Это более или менее так. Но обратите внимание, что объявление зависимостей является сложным делом (независимо от того, какой язык вы используете), и пример, который я сделал, будет охватывать только самые основы.

Другие вопросы по тегам