Alexander Dodonov (br0mberg) wrote,
Alexander Dodonov
br0mberg

В защиту Maven, ответ на пост

Это редкая узкоспециальная заметка по Javе. )

Появилась она после прочтения поста skipy_ru "Использование Apache Maven – обратная сторона медали". Поскольку за пять все проекты, с которыми мне довелось работать, были на Maven, я испытал батхёрт. Но немножко отдышавшись, скажу, что многие вещи написаны справедливо, в духе Закона дырявых абстракций от Спольски.


Этот закон гласит, что все нетривиальные абстракции - дырявы, то есть в практическом смысле из абстракции высокого уровня вылезают вещи более низкого, из протокола TCP вылезает IP, а из Maven вылезает реальная файловая структура, существующие другие сборщики, подключение к интернету и так далее.

Итак, эти три вещи про Maven вполне справедливы: он сильно завязан на подключение к интернету, он работает хорошо только с типовыми проектами, он сильно завязан на Javу.

А вот теперь с чем я не согласен, а не согласен потому что прочитал несколько глав книги "Better Builds With Maven". )) skipy пишет: "Но, простите, чем локальный репозиторий отличается от ситуации, когда библиотеки просто лежат рядом с исходниками в одной выделенной папке?" Так это и есть ключевая фишка Maven - когда-то давно все выкладывали библиотеки в отдельной папке - но! - все делали это по разному. И усилия потраченные на изучение сборки одного проекта при переходе на другой оказывались напрасными - в другом проекте приходилось изучать его сборку сначала. Maven лишь стандартизирует, где находится эта папка. В любом Maven проекте можно её с лёгкостью найти.

Другая вещь, которая удивила - как мол разворачивать приложение на Maven если у заказчика нет интернета? Так ведь это разные процедуры - есть разработка, а есть релиз. То есть то как разработчики получают файлы для работы с приложением и как их получают заказчики - разумеется разные вещи. Ну, это многие забывают, вспомним эпопею с svn диффами разных сайтов попавших в интернет. И то что все библиотеки проекта занимают 500 Мб, это по нынешним временам не серьёзно, у меня старая флешка в 32 раза больше.

И последнее - что у skipy на проектах редко приходилось менять библиотеки, и слежение за зависимостями оказывалось бесполезным. Это сильно зависит от проекта. Работа по всё ещё модной методологии Agile включает в себя создание регулярных сборок многомодульных проектов. Вот там, как раз, без слежения за зависимостями - никак.
Tags: maven, программирование
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments