Каковы преимущества написания плагина Maven в Groovy по сравнению с Java? - PullRequest
3 голосов
/ 08 октября 2010

Я собираюсь написать несколько плагинов для Maven, чтобы облегчить жизнь людям, занятым исследованиями и разработками. Я размышляю между написанием плагина в Groovy или в Java.

Плагину, скорее всего, потребуется:

  • Используйте команды Git, такие как извлечение, клонирование и т. Д.
  • Загрузка файлов pom.xml определенных артефактов из удаленного хранилища (нашего внутреннего Nexus)
  • Анализ файла pom.xml для извлечения нескольких элементов XML (таких как теги SCM и определенные элементы, которые мне нужны для моего плагина).
  • Работа с файловой системой (если каталог существует, удалить каталог и т. Д.).
  • Получение информации о метаданных из файла pom, такого как зависимости.

Любые советы, которые вы могли бы получить из своего обширного опыта написания плагинов на обоих языках, очень мне помогут!

1 Ответ

6 голосов
/ 08 октября 2010

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

По моему мнению, если производительность не является абсолютно критичной, Groovy обычно является лучшим выбором, чем Java, независимо от того, что вы делаете. Я говорю это потому, что для написания чего-либо в Groovy обычно требуется на 30-50% меньше кода, чем в Java. Большая часть кода, который вы пропускаете при использовании Groovy, - это то, что считается стандартным Java-кодом.

Компактность Groovy обусловлена ​​двумя факторами

  • Более сложные языковые функции (замыкания, свойства, перегрузка операторов, аргументы по умолчанию и т. Д.)
  • Высокопроизводительные расширения JDK. GDK добавляет множество чрезвычайно полезных методов в стандартные библиотеки Java. Например, в Java требуется около 10-20 строк кода для чтения содержимого файла (и правильной обработки исключений). Используя Groovy, вы можете просто использовать:

    String fileContent = new File('/foo/bar/baz.txt').text
    

Кроме того, GMaven обеспечивает поддержку написания плагинов Maven в Groovy , который выглядит намного лучше, чем класс AbstractMojo, который необходимо использовать при написании плагина в Java

Помимо

Вы упомянули, что вашему плагину нужно будет проанализировать pom.xml. Если это pom.xml проекта, в котором установлен ваш плагин, вам не нужно анализировать содержимое, потому что вся информация о проекте доступна плагину через экземпляр MavenProject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...