Как добавить зависимость к изображению Pharo? - PullRequest
0 голосов
/ 13 октября 2018

После создания приложения с использованием Seaside мне удалось отправить код своего изображения Pharo на GitHub с помощью айсберга.Я смог клонировать его в новый образ Pharo на новой машине.Однако при загрузке пакета в образ возникает ошибка, запрашивающая некоторые зависимости от моря.Я до сих пор не понимаю концепцию добавления зависимости к изображению Pharo.Можно ли мне объяснить, как это сделать?Мне это нужно для развертывания кода и совместной работы.

1 Ответ

0 голосов
/ 17 октября 2018

Извините, я не совсем понимаю ваш вопрос.Если вы имеете в виду, как вы можете определить проект (который может иметь зависимости и т. Д.), То, что вы делаете, например, с maven, вам нужно определить Baseline.

Baseline - это класс(и пакет), который вы должны определить и сохранить с вашими источниками.Возьмите этот пример: 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.

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

...