Почему Maven использует неправильный плагин, несмотря на явную версию плагина и pluginManagement?


Мой родитель pom exlicitly объявляет зависимость от maven-javadoc-plugin 2.9.1 в обоих

<pluginManagement>
   <plugins>
     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
     </plugin>
        ...

И

    <reporting>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
         <version>2.9.1</version>
         ...

(см. версия плагина Maven в pom (по-видимому) игнорируется ) и mvn help:effective-pom показывает, что используется 2.9.1. Однако сборка использует 2.10, что вызывает сбои сборки (см. maven-javadoc-плагин нарушает mvn релиз: выполните и http://jira.codehaus.org/browse/MJAVADOC-407 )

mvn help:describe -DgroupId=org.apache.maven.plugins 
                  -DartifactId=maven-javadoc-plugin

Показывает

    Name: Apache Maven Javadoc Plugin
    Description: The Apache Maven Javadoc Plugin is a plugin that uses the
      javadoc tool for generating javadocs for the specified project.
    Group Id: org.apache.maven.plugins
    Artifact Id: maven-javadoc-plugin
    Version: 2.10
    Goal Prefix: javadoc

Между тем,

mvn dependency:resolve-plugins

Показывает

[INFO] Plugin Resolved: maven-javadoc-plugin-2.9.1.jar

Однако, когда я запускаю сборку, mvn использует вместо этого 2.10, вызывая сбой сборки.

Как я могу заставить maven использовать 2.9.1, а не сломанный 2.10?

(я использую Maven 3.2.1)

1 2

1 ответ:

Убедитесь, что вы смотрите на правильную зависимость. Мы видим, что 2.9.1, как указано, используется для отчетов сайта, но 2.10 используется сборкой. Я считаю, что вы должны указать это в вашем

<build><plugins>

Раздел также.

Мы только что убедились, что страдаем от той же самой проблемы. У нас была версия плагина в разделе Reporting plugins, но не build plugins. Как только мы добавили его в раздел build plugins, проблема была решена. То причина, по которой он должен был быть в плагинах сборки, заключалась в том, что он использовался на этапе подготовки развертывания для сборки jar-файла javadoc. Это происходит отдельно от создания javadoc для отчетов сайта.