Т.е. через мавен я не могу через мавен ставить например ява пакеты как программы, а не как библиотеки.
Не могу например grails или какой нибудь sdk скачать и установить.
Когда я работаю с мавеном у меня постоянно всплывают воспоминания и дебиановском пакетном менеджере.
Мавену явно нужно было брать с ниго пример, там очень много крутых вещей в документации таится о которой не все линуксоиды знают (я помню меня сильно впечатлил строгость формата changelog файла).
Во вторых мне не нравится что мавен является не эволюционным продолжением анта, а конкурирующим с ним продуктом.
В итоге нельзя эволюциооно обновлять свой антовский проект - только сразу на мавен, только хардкор. Для слабоков смиловались и запилили ант плагин к мавену, что вообщем хоть как то, но выручает.
Отсюда кстати и поползли холивары.
Документация к мавену ужасна. Только гугл, только stack-overflow.
Кодировка исходников и версия джавы под которую они написаны прописывается неявным образом:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk>1.6</jdk>
</properties>
<build>
<plugins>
<plugin>
<groupid>org.apache.maven.plugins</groupId>
<artifactid>maven-resources-plugin</artifactId>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupid>org.apache.maven.plugins</groupId>
<artifactid>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk}</source>
<target>${jdk}</target>
<compilerversion>${jdk}</compilerVersion>
</configuration>
</plugin>
</plugins>
</build>
И даже тут есть проблема: нужно укзывать версию стандартных плагинов. Какую ёё прописывать непонятно.
Упаси бог написать вам свой java agent - они не поддерживаются на уровне конфигурации мавена. И даже плагина ещё нет.
В итоге для прогона юнит тестов библиотеки javaagent приходится изголятся таким образом:
<plugin>
<groupid>org.apache.maven.plugins</groupId>
<artifactid>maven-surefire-plugin</artifactId>
<configuration>
<forkmode>pertest</forkMode>
<argline>-javaagent:${project.build.directory}${file.separator}${project.build.finalName}.${project.packaging}</argLine>
<workingdirectory>${project.build.directory}</workingDirectory>
</configuration>
</plugin>
И при первом прогоне оно не работает, посокольку джарника ещё нет, а мы уже к нему обращаемся.Но как ни странно стадия тестов от этого не валится и он таки билдитcя. Мрак.
И так же тут всплывает ещё одна проблема: в пропертях мавена нет пути к сбилдженому артефакту.
Приходится самому её имитировать:
${project.build.directory}${file.separator}${project.build.finalName}.${project.packaging}Кстати сами проперти в отдельный файл никак не вынесеш, как это сделано в анте.
settings.xml явно не самая удобная вещь. И непонятно почему репозитории не перенесены туда.
Не до конца понятный build lifecycle:
- clean и site запускается только вручную, по сути это самостоятельные таргеты а пункты лайфцайкла.
- install это совсем не то что что и install в make.
- deploy тоже у всех ассоциируется немного с другим процессом.
С версииированием артифактов всё тоже не всегда хорошо. Дописывать alpha beta к релиз пакетам геморно (через плагин). А ведь это вполне стандартная система версиирования.
Вообщем недостатков много, и всё равно в основе мавена лежит очень правильная идея: описывать проект, а не процесс его создания. Это очень правильная философия.
Комментариев нет:
Отправить комментарий