2014-11-06 2 views
1

Я новичок в Maven, и если это очень простой вопрос, пожалуйста, избавите меня.Где находится родительский POM.xml

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

[ERROR] Failed to execute goal 
    org.apache.maven.plugins:maven-site-plugin:3.1:site (default-site) 
    on project mobileads: Execution default-site of goal 
    org.apache.maven.plugins:maven-site-plugin:3.1:site 
    failed: A required class was missing while executing 
    org.apache.maven.plugins:maven-site-plugin:3.1:site: 
    org/sonatype/aether/graph/DependencyFilter 

Я знаю, что есть проблема с maven-site-plugin: 3.1 версия.

Если я явно включает в себя последнюю версию Maven-сайта-плагин (3.4) эта проблема disappears.But мой вопрос, где он набирает maven-site-plugin:3.1 как в мой проект-х pom.xml я не могу видеть этот плагин, так что указывает на то, что мне он выбирает некоторые настройки по умолчанию где-то.

Я хочу знать имя этого файла и расположение этого файла в проживании, чтобы я мог видеть все настройки. Я использую MAC.

Заранее спасибо.

Раджеш

+0

Возможный дубликат [Где супер pom для maven 3?] (Http://stackoverflow.com/questions/6797209/where-is-super-pom-for-maven-3) – Joe

ответ

2

Это в один из распределительных банок Maven, а именно в $MAVEN_HOME/lib/maven-core-X.X.X.jar. Внутри META-INF/plexus/components.xml файл. Вот почему:

Когда-то (в Maven 2), пока не указано неявно, плагины всегда использовали последнюю версию. Решение было основано на двух предположениях: плагины всегда улучшаются, поэтому вы хотите получить последнюю версию, и поскольку плагины-модули не являются частью вашего продукта (даже не из его производственного класса), это нормально для него иногда ломаться.

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

Итак, хорошей практикой является создание родителя pom.xml с частью <pluginManagement> и пригвоздить версии всех плагинов, которые там используются.

+0

Спасибо за ответ JBaruch. ... Итак, вы хотите сказать, что это файл maven будет ссылаться на все необходимые ему плагины, если он не найден в моем проекте pom.xml? и поэтому это означает, что если я возьму последний maven (я использую Maven 3.2.3), эти плагины будут приняты только командой Maven. и еще одна вещь, которую я хочу знать, как я могу просмотреть этот конкретный файл, поскольку он является частью файла jar. – Learner

+0

Добавлен ответ. – JBaruch

Смежные вопросы