Maven: почему я могу запустить mvn checkstyle: checkstyle без pom.в xml файле?

Я использую базовый проект maven, где в pom определены только следующие вещи.XML-код:

  • зависимость javaee-api
  • зависимость junit
  • плагин maven-compile-plugin
  • плагин maven-war-plugin
  • плагин wildfly-maven-plugin

почему я могу запустить mvn checkstyle:checkstyle в командном окне? Не должен ли я определить плагин checkstyle pom.xml? Что я упускаю?

"Правка": установлен плагин eclipse "Eclipse Checkstyle Plug-In". Это причина? Если да, то как maven общается с ним?

2 ответов


как вы уже видели, можно выполнять Плагины непосредственно из командной строки без настройки плагина в файле POM вашего проекта.

чтобы узнать, какой плагин вы хотите выполнить maven, использует разрешение префикса плагина.

через командную строку, mvn checkstyle:checkstyle, в качестве примера это примерно то, что делает maven:

  • возьмите префикс, бит перед двоеточием, из выполнения. В вашем случае checkstyle.
  • устранить эту к возможному имени (artifactId) плагина. Для этого он использует два возможных формата:
    • maven-${prefix}-plugin (для официальных плагинов Maven)
    • ${prefix}-maven-plugin (плагинов из других источников)
  • такой maven-checkstyle-plugin как artifactId плагина
  • поиск плагина с этим artifactId и одним из настроенных groupId (по умолчанию Maven ищет с помощью groupId org.apache.maven.plugins)
  • он находит maven-checkstyle-плагин
  • выполняет цель (бит после двоеточия в команде), поэтому цель checkstyle в этом случае.

все это объясняется гораздо более подробно и лучше, чем я могу на отображение префикса плагина страница официальной документации maven.


причина в том, что плагин не должен быть явно настроен в pom или привязан к фазе для запуска. Таким образом, он всегда может запускаться прямым вызовом (указывая цель вместо фазы при вызове Maven):

mvn [options] [<goal(s)>] [<phase(s)>]

посмотреть жизненный цикл документы:

цель плагина представляет собой конкретную задачу (более тонкую, чем этап сборки), которая способствует созданию и управлению проектом. Это может быть связано до нуля или более этапов сборки. Цель, не связанная с какой-либо фазой сборки, может быть выполнена вне жизненного цикла сборки путем прямого вызова.

Это определенно не имеет ничего общего с плагинами Eclipse.