Подтвердить что ты не робот

Плагины в Maven и POM.xml

Я только начал использовать Maven, и я прочитал, что плагины - это дополнительные компоненты, которые можно использовать.
Типичная структура файла pom.xml -

<project>
  <groupId>org.koshik.javabrains</groupId>
  <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>JarName</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Вопрос. Где я должен вставить тег plugin? например:

<plugin>
  <groupId>org.jibx</groupId>
  <artifactId>jibx-maven-plugin</artifactId>
  <version>1.2.4</version>
  <executions>
    <execution>
      <goals>
        <goal>bind</goal>
      </goals>
    </execution>
  </executions>
</plugin>

До зависимости или после тега dependency? Это имеет значение?

4b9b3361

Ответ 1

<project>
    <groupId>org.koshik.javabrains</groupId>
    <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>JarName</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.jibx</groupId>
                <artifactId>jibx-maven-plugin</artifactId>
                <version>1.2.4</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>bind</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

Вы также можете разместить плагины в разделе <build> <profile>, если вы используете профили maven. Порядок не имеет значения.

Ответ 2

<plugin> следует поместить в раздел <plugins>, который следует поместить в раздел <build> или <pluginManagement>. Порядок <dependency> или <build> не имеет значения.

Полная ссылка на pom.xml находится здесь: http://maven.apache.org/pom.html

Ответ 3

Позднее разъяснение по двум важным моментам

Где разместить plugin
A plugin действительно должен быть добавлен в большинстве случаев в разделе build/plugins, однако существует важное различие между размещением его внутри plugins и помещением его в pluginManagement > /plugins.

Это недоразумение часто причина не вызываемого плагина в Maven или более сложное устранение неполадок:

  • Плагины под build/plugins являются непосредственно частью сборника Maven по умолчанию, если они указывают execution или если они что-то конфигурируют для сборки по умолчанию (см. ниже)
  • Плагины под build/pluginManagement/plugins не обязательно являются частью сборника Maven по умолчанию, то есть является руководством, это намек на maven: вы используете этот плагин, то, пожалуйста, используйте эту конфигурацию, конфигурацию, настройки, которые я укажу здесь.

    Но что значит использовать средства?. Значит: если тот же плагин также присутствует в разделе build/plugins, тогда примените это управление (и только тогда это будет эффективно); или, если плагин вызывается по умолчанию Maven, а затем применяйте его.

    Но как работает плагин по умолчанию?. Эта часть основной философии maven: соглашение по конфигурации. По соглашению, когда вы укажете определенный packaging (по умолчанию jar, но он может быть war например), вы хотите, чтобы некоторые плагины были вызваны. Чтобы построить jar, по умолчанию, вызовите maven-jar-plugin; для создания war, по умолчанию вызывать maven-war-plugin и так далее. Итак, если вы укажете конфигурацию плагина в build/pluginManagement/plugin для плагина, который имеет привязку по умолчанию к сборке Maven, тогда он также будет использоваться.

Заказ
Что касается упорядочения секций в файле pom.xml, требуется дополнительное уточнение: оно действительно не имеет значения в большинстве случаев, однако порядок элемента plugin в build/plugins может быть важным. Поскольку Maven 3.0.3 (MNG-2258), будут задействованы разные действия с плагинами, присоединенные к той же фазе Maven в порядке их объявления в файле pom.xml. То есть порядок важно в этом случае, так как это может повлиять на поведение сборки.

Кроме того, также порядок объявлений dependency может повлиять на вашу сборку в сторону Mediation Medency, то есть первая заявленная зависимость выигрывает в случае конфликта против транзитивной зависимости. Итак, еще раз упорядочение важно в определенных случаях.

И последнее, но не менее важное: хотя упорядочение не важно для других разделов файла pom.xml, хорошая привычка - следовать официальным Рекомендации Maven и, как упрощенная версия, следуйте этому порядку объявления:

<project>
  <modelVersion/>

  <parent/>

  <groupId/>
  <artifactId/>
  <version/>
  <packaging/>

  <properties/>

  <dependencyManagement/>
  <dependencies/>

  <build/>

  <reporting/>

  <profiles/>
</project>

sortpom-maven-plugin также может использоваться для автоматического применения этого стандартного заказа, просто вызывая следующее в соответствующем файле pom.xml:

mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \
     -Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06 

Для дальнейшего чтения:

Ответ 4

Если вы хотите использовать плагин для сборки, вы можете использовать приведенную ниже структуру.

<project>
 <build>
  <plugins>
  </plugins>
 </build>
</project>

Ответ 5

Вы можете вставить свой второй фрагмент в файле pom.xml между двумя тегами <plugins> </plugins>.

Ответ 6

Порядок разделов в POM не имеет значения. В общем, в Maven есть плагины сборки и плагины отчетов. Ваш случай - использовать плагин сборки, поэтому вы должны поместить этот блок <plugin> в раздел <project><build><plugins>....

Посмотрите этот для некоторых оснований о плагинах.