Может ли Паскаль выиграть что-то вроде Apache Maven?

9

Apache Maven - очень популярный инструмент управления сборками и зависимостями в среде Java с открытым исходным кодом. Я проверил некоторые тесты, чтобы узнать, может ли он обрабатывать скомпилированные Free Pascal / Delphi единицы и нашел его легким в реализации. Таким образом, можно было бы

  • освободить библиотеки с открытым исходным кодом, предварительно скомпилированные для Free Pascal (или Delphi) в общедоступном репозитории Maven
  • включают метаданные в этом репозитории, которые содержат информацию о зависимостях
  • используйте Maven в командной строке, чтобы загрузить библиотеку с открытым исходным кодом из общего репозитория и автоматически разрешить все зависимости
  • локальные репозитории, работающие как прокси, могут использоваться для кэширования часто используемых двоичных файлов.
  • генерация и проверка автоматической контрольной суммы (предоставленная Maven) уменьшит риск загрузки поврежденных двоичных файлов.
  • исходный код и даже файлы документации могут быть снабжены двоичными файлами
  • двоичные файлы могут быть предоставлены или без отладочной информации
  • серверы непрерывной интеграции, такие как Хадсон , TeamCity или CruiseControl можно использовать для создания проектов всякий раз, когда изменения передаются в исходную систему управления и уведомляют разработчиков о ошибках сборки

Этот способ управления зависимостями может быть очень полезен для проектов с открытым исходным кодом, которые используют множество сторонних библиотек со сложными зависимостями. Это позволит избежать типичных конфликтов, вызванных использованием неправильных версий.

Для разработчика рабочий процесс для редактирования и построения проекта будет сведен к минимуму:

  • проверить источник проекта из внутренней системы управления версиями
  • изменить исходный файл (ы)
  • запустите mvn package , чтобы автоматически загружать все необходимые сторонние библиотеки (предварительно скомпилированные блоки), если они еще не находятся в локальном репозитории рабочей станции.
  • скомпилировать и запустить

Единственным дополнительным файлом для Apache Maven, который требуется в папке проекта, является файл POM.XML, содержащий информацию о проекте.

Изменить: в то время как Maven можно использовать для некоторых из требуемых задач, реализация решения, такого как Maven в родном Free Pascal, будет иметь некоторые преимущества: не требуется Java SDK, поддержка всех платформ разработки, где доступен Free Pascal, поддержка и разработка плагинов в Паскале.

Использование Maven-подобного инструмента не будет полезно для проектов с открытым исходным кодом - коммерческие проекты могут также получать и использовать артефакты в общедоступных хранилищах Maven.

Функции Maven перечислены в Ссылка

Update:

одним из вариантов использования может быть сборка Lazarus, где Maven загрузит все необходимые библиотеки и вызовет компилятор с необходимыми аргументами пути построения. Изменения в зависимостях от более низких уровней будут автоматически распространяться до родительской сборки.

Возможные преимущества:

  • меньше времени, необходимого для создания новой работы станции, без ручной установки необходимы сторонние библиотеки.
  • меньше ошибок, вызванных неправильной библиотекой версии, обнаружение версии конфликтов (например, если два библиотеки зависят от разных версии третьей библиотеки)
  • артефакты, созданные внутри могут быть добавлены к локальному maven хранилище и разработчиков и проектов, центральных хранения всех артефактов с метаданные
  • Конструкции
  • воспроизводятся, просто используя тот же источник и проект файл метаданных (pom.xml)
  • может сократить время разработки и повысить стабильность проекта

Обновление # 2: FPMake

FPMake система сборки для Free Pascal, похоже, является инструментом с большим потенциалом, во многих деталях он очень похож на Maven

  • FPMake - это система построения на основе паскаля, разработанная для FPC и распространяемая с помощью FPC
  • FPMake стандартизирует здание, определив некоторые ограничения, такие как стандартные каталоги
  • команда fppkg <packagename> будет искать в базе данных для пакета, извлекать его, а затем компилировать fpmake.pp и запускать его
  • он имеет стандартные цели сборки (очистить, построить, установить, ...)
  • он может создать файл «manifest», подходящий для импорта в репозиторий (например, mvn deploy или mvn install ), манифест представляет собой XML-файл, который очень похож на pom.xml в Maven:

Файл манифеста FPMake:

      <packages>
        <package name="my-package">
          <version major="0" minor="7" micro="6" build="1"/>
          <filename>my-package-0.7.6-1.zip</filename>
          <author>my name</author>
          <license>GPL</license>
          <homepageurl>http://www.freepascal.org/</homepageurl>
          <email>[email protected]</email>
          <description>this is the package description</description>
          <dependencies>
            <dependency>
              <package packagename="rtl"/>
            </dependency>
          </dependencies>
        </package>    
      </packages>
    
задан mjn 06.01.2010 в 15:48
источник

2 ответа

1

Freepascal работает над собственной системой пакетов в виде между стилями портов apt-get и freebsd. (загрузить исходный код / ​​построить / установить автоматически), называемый fppkg. Однако работа застопорилась. Люди, инвестирующие время, являются узким местом, а не людьми, которые хотят выбирать инструменты.

Что касается Maven, мне не нравятся вспомогательные инструменты, которые нуждаются в установке огромных внешних runtimes. Это может быть хорошо для большого крупного приложения (например, Open Office), но не для использования.

Я также предпочитаю инструмент, предназначенный для реальности и рабочего процесса FPC. Инструменты документации, инструменты сборки, системы загрузки, системы testuite уже есть, ему просто нужен человек, который посвящает ему много времени, чтобы это произошло.

Некоторые типичные проблемы при внедрении новой технологии в проекте как FPC и почему она имеет тенденцию создавать собственные инструменты:

  • необходимо обучить 20+ коммиттеров заочно.
  • Единственный программный язык COMMON, который вы можете принять, - Free Pascal. Даже внутренняя работа Delphi не может считаться само собой разумеющимся, чтобы быть известными (многие коммиттеры пришли непосредственно к FPC или даже еще через TP или Mac Pascal)
    • Очевидно, что что-то делает с плагинами на другом языке, раздражающим.
  • Сценарий Bash занимает второе место. (g) сделать третий, но уже на величину меньше.
  • Все серверы являются * nix-подобными (FreeBSD, OS X, Linux), но не все запускают Apache. (например, мое зеркало FreeBSD запускает XSHTTPD)
  • Кто-нибудь, кто знает больше, должен быть посвященным сторонником в течение длительного времени. Устранение проблем, обновление / миграция и т. Д. Наглядно более чем по понятным причинам.
  • Большая боль - это дистрибутивы Linux (и в меньшей степени FreeBSD), большинство сторонников пакетов * nix не могут быть больше, чем «./configure;make;make install», и должны быть помещены в хранилище с почти встроенным хранилищем и вспомогательные файлы.
    • Распределительная упаковка FPC / Lazarus всегда была важной и все еще растет.
    • Все дистрибутивы имеют свои собственные специальные правила о метаданных, depedancies и способах публикации источников. В частности, Debian / Ubuntu очень бюрократичен и медленный.
    • Большинство не любят сторонние автоинсталляторы поверх своих систем (так как они обходят контроль над зависимостями)

Все это приводит к эффективной практике, что собственные инструменты в Pascal с минимальными сценариями работают лучше всего. Используемые инструменты:

  • Gmake в основном используется для параметризации процесса сборки на уровне каждого каталога, был создан преемник fpcmake (а не производная производная, несмотря на имя), но миграция не завершена.
  • Латекс и преобразование латекса в html (tex4ht, но debian использует hevea) используются в здании документации (документация, не являющаяся библиотекой)
  • Сайт сообщества (сервер сообщества netscape, который использует TCL-скриптинг, тяжелый сложный сервер приложений) был проблемой с самого начала, но особенно в последнее время, поскольку сопровождающий стал менее активным.
  • У Mantis была проблема (особенно модуль электронной почты сбой или хромой сервер из-за объема), но он был взломан в форму во время последовательных обновлений и тяжелой работы нескольких лазарейских девелов. В настоящее время это достойная рабочая лошадка.
  • lazarus.freepascal.org Форум PHPBB OTOH относительно безболезнен, поскольку многие молодые люди знают, как с этим бороться.
  • То же самое относится и к субверсиям (хотя более продвинутый масштаб нуждается в некоторой корректировке, далеко не все находятся в глубине слияния и слияния)

Если кто-то действительно серьезно относился к Maven, я обычно спрашивал его:

  • to CRITICIALLY исследует использование проекта. Очень конкретным образом, с расписанием и оценками времени. Уровень птичьего глаза «все возможно», обзоры крайне важны.
  • Подумайте о будущих изменениях используемых технологий. Каждая технология, в конечном счете, заменяется даже собственными, в проектах на 18 лет +. Новая технология не должна затруднять миграцию других инфраструктурных компонентов. Новая технология для прекращения всех новых технологий не существует.
  • Сделать план миграции. Миграция часто недооценивается и недооценивается.
  • И, в конце концов, всегда есть вопрос 1000000 евро, кто будет ежедневно обслуживать?

Имейте в виду, что в компании вы просто пинаете ответственного за сервер приложений. Но в неформальной обстановке это намного сложнее, особенно в долгосрочной перспективе, поскольку жизнь людей, занятия и время, потраченные на проект, различаются.

    
ответ дан Marco van de Voort 12.12.2009 в 15:43
0

Звучит как интересный план, но сообщество Delphi (и FPC, тем более, я бы себе!) ценит библиотеки как источник гораздо больше, чем предварительно скомпилированные библиотеки. Общий консенсус заключается в том, что любой, кто использует библиотеку только для двоичных файлов, является дураком по двум причинам: вы не можете исправить какие-либо ошибки, обнаруженные в нем, а изменения компилятора нарушат совместимость.

    
ответ дан Mason Wheeler 12.12.2009 в 14:52