Проект Java Рекомендации по компоновке для сборок на основе Ant

Я немного шокирован тем, что (если?) Не был задан этот точный вопрос, но 15 минут сканирование SO не обнаружило точного совпадения. (Если я ошибаюсь, Для наших целей у нас есть следующий контекст (возможно, большая часть которого не имеет отношения к делу):

  • Большинство разработчиков используют Eclipse (не все)
  • Проект поддерживается в subversion
  • Сборки проектов недавно были перенесены в Hudson, в который мы хотим использовать плагин выпуска для управления выпусками и некоторые настраиваемые сценарии для обработки автоматического развертывания
  • Этот проект представляет собой «обычное» приложение, своего рода «производственный прототип» с очень ограниченным кругом пользователей, но они на удаленных объектах с разделением воздушных зазоров, поэтому важна доставка отслеживаемых версий артефактов для упрощения установки, ручного сбора / восстановления данных и удаленной диагностики.
  • Некоторые зависимости (JAR) включены в репозиторий SVN; другие могут быть загружены через ant-скрипт во время сборки, если необходимо. Ничего особенного, как Айви, пока нет (и, пожалуйста, не надо jar в каталоге верхнего уровня lib - этот каталог в деревьях разработчиков является неприкосновенной территорией SVN. Но распространение чего-то для публичного использования с build / lib / *. Jar вызывает затруднения. То же самое верно и для документации и других встроенных артефактов, которые мы хотим разместить в едином месте в дистрибутиве, но не хотим, чтобы разработчики и пользователи использовали совершенно разные структуры каталогов. Каталог build / очень удобен для разработки, но распространять его - неприятный артефакт. В целях распространения я бы предпочел, чтобы все JAR находились в одном месте lib , на самом деле, структура, подобная приведенной ниже, имеет наибольший смысл. В настоящее время, мы строим эту структуру на лету с помощью ant dist , выполняя некоторые замысловатые манипуляции с путями по мере создания артефактов .tar.gz и .zip.

    Как я думаю, dist должен выглядеть так:

    project-root/
    project-root/source                  // present in only some dists 
    project-root/etc                     // same as in development tree
    project-root/doc                     // same as in development tree
    project-root/doc/javadoc             // from build 
    project-root/lib                     // all dependency and built JAR files
    project-root/bin                     // same as in development tree
    build.properties               // build and release numbering, etc...
    

    Это вопрос узко о том, «как мне поддерживать чистую структуру проектов разработки и распространения?» как я просил выше; но также для сбора информации о макетах проектов Java / Ant в целом и критики нашего конкретного подхода. (Да, если вы считаете, что это должна быть вики сообщества, я сделаю это так ...)

11
задан andersoj 23 November 2010 в 16:19
поделиться