Сборка BE4 и BE-SQL

Материал из DevelopmenOnTheEdge
Перейти к: навигация, поиск

Сборка BE-SQL

BE-SQL — полноценный Maven-проект. Смотрите настройку доступа в Maven(Nexus) во внутренней вики. Все этапы сборки выполняются с помощью maven, включая компиляцию javacc-грамматики. Для сборки новой версии:

  • Выкачать проект dote/dote_modules
  • Зайти в dote_modules/sql
  • Изменить номер версии в pom.xml:
<version>0.0.24</version>
  • Запустить mvn deploy.

После этого новая версия попадёт в Nexus-репозиторий и будет доступна для других разработчиков. Деплоить одну и ту же версию дважды не выйдет. Если что-то пошло не так, увеличивайте номер версии снова и деплойте заново.

Чтобы воспользоваться новой версией BE-SQL в BE4, вам придётся выпустить также новую версию BE4 с обновлёнными зависимостями (см. ниже).

Структура BE4

Проект BE4 состоит из двух частей. Исходный код по историческим причинам лежит вместе, но разделён по проектам:

  • BE4 Core: ядро BE4, необходимое для работы через Ant. Состоит из пакетов (включая подпакеты):
    • com.beanexplorer.enterprise.be4core
    • com.beanexplorer.enterprise.metadata
  • BE Eclipse IDE: плагины для Eclipse, реализующие пользовательский интерфейс. Включает в себя все остальные пакеты и зависит от BE4 Core.

BE4 Core содержит меньше зависимостей и является полноценным Maven-проектом (все зависимости есть в Maven). Pom-файл расположен в be4/pom/pom.xml.

BE Eclipse IDE собирается через Eclipse с помощью Ivy. При этом некоторые зависимости присутствуют явно в виде jar (каталоги be4/lib и be4/plugins — кое-что из BioUML), но большая часть зависимостей выкачивается автоматом через Ivy. Конфигурация ivy в be4/src/ivy.xml. Проект в Eclipse настроен так, что зависимости скачиваются в каталог be4/dep и потом оттуда используются. По факту с точки зрения сборки BE Eclipse IDE включает в себя BE4 Core.

Добавление/обновление зависимости в BE4

Рассмотрим как обновить версию зависимости BE4 на примере BE-SQL. Предположим, требуется обновить версию BE-SQL с 0.0.24 на 0.0.25.

1. Обновите версию в be4/pom/pom.xml (необходимо для сборки BE4 Core; этот шаг не нужен для зависимостей, которые требуются только BE Eclipse IDE):

 <dependency>
  <groupId>com.developmentontheedge</groupId>
  <artifactId>sql</artifactId>
  <version>0.0.24</version> --> 0.0.25
 </dependency>

2. Обновите версию в be4/src/ivy.xml (необходимо для компиляции BE Eclipse IDE)

 <dependency org="com.developmentontheedge" name="sql" rev="0.0.24" />
 -->
 <dependency org="com.developmentontheedge" name="sql" rev="0.0.25" />

3. Обновите версию в be4/META-INF/MANIFEST.MF в разделе Bundle-ClassPath (необходимо для работы BE Eclipse IDE):

dep/sql-0.0.24.jar, -->  dep/sql-0.0.25.jar,

Следует делать все изменения одновременно. Даже если вы не используете Eclipse-версию, пользователи Eclipse могут пострадать, если ограничиться первым пунктом.

После любых изменений зависимостей, как и после изменений исходного кода, необходимо выпустить новую версию BE4, чтобы другие пользователи могли увидеть ваши изменения (см. ниже). Исключение составляют только пользователи BE Eclipse IDE, которые не обновляются с Update-site, а используют режим с двумя Eclipse-инсталляциями. Желательно со временем перевести этих пользователей на Eclipse Update site.

Сборка версии BE4

Предположим, последняя выпущенная версия 0.1.46 и мы хотим выпустить версию 0.1.47.

1. Сборка Maven-артефакта. Аналогично BE-SQL: идём в файл be4/pom/pom.xml, меняем версию <version>0.1.46</version> на <version>0.1.47</version> и запускаем команду mvn deploy. После этого BE4 попадает в Nexus.

2. Обновление версии по умолчанию. Ant-скрипты по умолчанию пользуются версией BE4, которая указана в файле be4/src/be4version.properties, который выглядит так:

BE4_VER=0.1.46

Чтобы все пользователи перешли на новую версию, замените здесь на 0.1.47 и закоммитьте. Если вдруг в новой версии обнаружатся критические проблемы, достаточно будет просто вернуть здесь версию на стабильную. Также при запуске любого ant-таргета можно указать версию явно. Например, так: ant -DBE4_VER=0.1.46. Таким образом можно сравнивать поведение в разных версиях.

Обратите внимание, что хотя Java-код BE4 используется из стабильных сборок, опубликованных через Maven (код из Git не используется), ftl-макросы используются из be4/macro. Поэтому там ошибки повлияют на работу коллег.

3. Обновление Eclipse Update Site. Для этого делаются следующие шаги:

3.1. Обновляем версию в be4/META-INF/MANIFEST.INF в строчке Bundle-Version:

Bundle-Version: 0.1.46

3.2. Импортируем в Eclipse проекты be4/.project, be4/com.beanexplorer.be4.feature/.project, be4/com.beanexplorer.be4.site/.project

3.3. Открываем /com.beanexplorer.be4.feature/feature.xml в Feature Manifest Editor.

3.4. Во вкладке Overflow меняем версию 0.1.46.qualifier на 0.1.47.qualifier.

3.5. Во вкладке Plugins нажимаем правой кнопкой на com.beanexplorer.enterprise.eclipse, Synchronize Versions, Copy versions from plug-in and fragment manifests, Finish

3.6. Сохраняем feature.xml (обязательно сейчас, не позже!)

3.7. Открываем /com.beanexplorer.be4.site/site.xml в Site Manifest Editor

3.8. Во вкладке Site Map разворачиваем beanexplorer4 и удаляем features/com.beanexplorer.be4.feature_0.1.46.qualifier.jar. Затем нажимаем Add feature, пишем com.beanexplorer и выбираем в списке com.beanexplorer.be4.feature.

3.9. Сохраняем и нажимаем Build All.

3.10. После этого каталог be4/com.beanexplorer.be4.site является полноценным update site'ом Eclipse. Скопируйте его в \\logrus.dote.ru\pub2\be4\com.beanexplorer.be4.site (лучше старую версию переименовать, чтобы если что можно было откатиться.

beanexplorerdev, beanhelpers для be4

 cd BeanExplorer/release/    
 mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote    
 mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.3 -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/releases/ -DrepositoryId=dote

TODO может деплоить snapshots?

 mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanhelpers -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanhelpers.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote
 mvn deploy:deploy-file -DgroupId=com.beanexplorer -DartifactId=beanexplorerdev -Dversion=0.0.4-SNAPSHOT -Dpackaging=jar -Dfile=beanexplorer_dev.jar -Durl=http://nexus.dote.ru/nexus/content/repositories/snapshots/ -DrepositoryId=dote