Как правильно определить версии плагинов в maven pom.xml?

Я пытаюсь создать веб-приложения, и из-за соглашений с офисами я использую настройку Maven/Jetty/Eclipse при попытке создания Java-приложений.

В моем командном окне, я пытаюсь скомпилировать и запустить, набрав mvn jetty: run. В настоящее время это приводит к большому количеству предупреждений, прежде чем я получу (очень вероятный) сбой сборки. Я хотел бы разрешить эти ошибки, прежде чем двигаться дальше, даже если они не являются причиной сбоя сборки.

Предупреждающее сообщение, похоже, говорит, что мне не хватает объявлений для версий моих плагинов, и мои попытки поиска помощи предложили то же самое. Однако у меня есть версии. Еще одна моя проблема заключается в том, что ошибки указывают на то, что предупреждения, т.е. из строки 13. Это пустая строка. Я обеспокоен тем, что могут возникнуть проблемы с обновлением или дублированные pom.xml файлы, но, с другой стороны, компилятор действительно реагирует на редактирование файла, как я его знаю.

Мое сообщение об ошибке:

H:\projects\releaseplan>mvn jetty:run
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for releaseplan:releaseplan-model:jar:5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ releaseplan:releaseplan:5, H:\projects\releaseplan\pom.xml, line 13, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ releaseplan:releaseplan:5, H:\projects\releaseplan\pom.xml, line 22, column 15
[WARNING]
[WARNING] Some problems were encountered while building the effective model for releaseplan:releaseplan-server:war:5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ releaseplan:releaseplan:5, H:\projects\releaseplan\pom.xml, line 13, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ releaseplan:releaseplan:5, H:\projects\releaseplan\pom.xml, line 22, column 15
[WARNING]
[WARNING] Some problems were encountered while building the effective model for releaseplan:releaseplan:pom:5
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 13, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ line 22, column 15

И весь pom.xml, в случае ошибки где-то я не ожидаю, что это будет:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>releaseplan</groupId>
<artifactId>releaseplan</artifactId>
<version>1</version>
<packaging>pom</packaging>
<name>releaseplan</name>

<build>

    <plugins>

        <!--<plugin> <groupId>ro.isdc.wro4j</groupId> <artifactId>wro4j-maven-plugin</artifactId> 
            <version>${wro4j.version}</version> <executions> <execution> <goals> <goal>jshint</goal> 
            </goals> </execution> </executions> <configuration> <options>devel,evil,noarg</options> 
            </configuration> </plugin> -->
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <!-- Jetty Version: 8.x Home: Eclipse, Codehaus Java Version: 1.6 Protocols: 
                HTTP/1.1 RFC2616, WebSocket, SPDY Servlet Version: 3.0 JSP Version: 2.1 http://wiki.eclipse.org/Jetty -->
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.13.v20130916</version>
            <configuration>
                <webAppConfig>
                    <contextPath>/</contextPath>
                </webAppConfig>
                <scanIntervalSeconds>1</scanIntervalSeconds>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <tasks>
                            <echo>********************************************</echo>
                            <echo>***** This project REQUIRES Maven 3.0+ *****</echo>
                            <echo>********************************************</echo>
                            <echo>mvn jetty:run - Running as un-assembled webapp</echo>
                            <echo>mvn jetty:run-war - Running as assembled webapp</echo>
                        </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<dependencyManagement>
    <dependencies>
        <!--  <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> 
            <version>${protostuff.version}</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> 
            <artifactId>protostuff-json</artifactId> <version>${protostuff.version}</version> 
            </dependency> -->
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>servlet-api</artifactId>
            <version>${servlet.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<modules>
    <module>model</module>
    <module>server</module>
</modules>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <compiler.source>1.5</compiler.source>
    <compiler.target>1.5</compiler.target>

    <junit.version>4.4</junit.version>
    <servlet.version>2.5-20081211</servlet.version>
    <jetty.version>6.1.24</jetty.version>
    <protobuf.version>2.3.0</protobuf.version>
    <jackson.version>1.7.9</jackson.version>
    <protostuff.version>1.0.2-SNAPSHOT</protostuff.version>
</properties>

 <repositories>
        <repository>
            <id>java</id>
            <name>java</name>
            <url>http://download.java.net/maven/2/</url>
        </repository>
        <repository>
            <id>repo1</id>
            <name>repo1</name>
            <url>http://repo1.maven.org/maven2</url>
        </repository>
    </repositories>



<pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>
</project>

Ответ 1

Вероятно, вы используете Maven 3, который должен знать все версии плагинов, описанные здесь: https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes#Maven3.xCompatibilityNotes-AutomaticPluginVersionResolution

Добавление в раздел pluginManagement родительского pom.xml всех версий плагинов - правильный путь. Лучший способ (на предприятии) - иметь родительский файл pom.xml предприятия, используемый всеми проектами.

На самом деле добавьте следующую строку в родительский раздел pom.xml свойства:

<maven-compiler-plugin.version>3.0</maven-compiler-plugin.version>

И добавьте следующую строку в родительский раздел pom.xml build > pluginManagement:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
</plugin>

Надеюсь, что это поможет...