2013-06-28 3 views
0

Я не смог найти ответ конкретно по этой проблеме.Зависимости плагина Maven

Я успешно установил исправленный Maven плагин .jar файл вручную (osxappbundle), используя следующий:

mvn install:install-file -Dfile=osxappbundle-maven-plugin-1.0-alpha-4-SNAPSHOT.jar -Dpackaging=jar -DgroupId=org.codehaus.mojo -DartifactId=osxappbundle-maven-plugin -Dversion=1.0-alpha-4-SNAPSHOT -DgeneratePom=true 

Когда плагин называется в П, в частности, «расслоения», я получаю ошибку:

Unable to load the mojo 'bundle' in the plugin 'org.codehaus.mojo:osxappbundle-maven-plugin:1.0-alpha-4-SNAPSHOT'. A required call is missing: org/apache/velocity/exception/MethodInvocationException.

org.apache.velocity определенно установлен и находится в моем местном respository (.m2), но не нашел. Если я вручную добавлю файлы классов в jar, они будут найдены, поэтому это говорит о том, что он не разрешает зависимости, используя локальный репозиторий.

Я предполагаю, что это происходит, потому что я вручную установил файл jar.

Если фляга установлена ​​вручную, будет ли она разрешать зависимости только в том случае, если они находятся в банке и не выглядят снаружи?

Плагин упоминается в ПОМ, как это:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>osxappbundle-maven-plugin</artifactId> 
    <version>1.0-alpha-4-SNAPSHOT</version> 
    <configuration> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>package</phase> 
       <goals> 
        <goal>bundle</goal> 
       </goals> 
     </execution> 
    </executions> 
</plugin> 
+2

Покажите нам, как вы смотрите этот плагин в ПОМ – jtomaszk

+0

Вопрос обновляется. – CAM79

ответ

3

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

Обычно достаточно изменить тег <version> в плагине pom.xml и запустить mvn install. Это установит файл jar и pom в ваш локальный репозиторий. Используйте версию, в которой четко указано, что она не является официальной. 1.2.3-CUSTOM-SNAPSHOT. Затем измените зависимость от этой версии в файле pom вашего приложения, и она будет работать так, как ожидалось.

Если вы хотите использовать плагин для установки подключений напрямую по каким-либо причинам, вы всегда должны установить надлежащий pom.xml с вашим файлом jar. Используйте -DpomFile=/path/to/pom.xml, чтобы указать путь к правильному pom вашего плагина. -DgeneratePom=true будет генерировать только минималистский pom, если для этого артефакта и версии в репозитории еще нет pom.xml. Этот файл pom не укажет никаких зависимостей. Поэтому никогда не используйте эту опцию, если ваш jar/plugin имеет какие-либо зависимости.

Ссылки:

+0

Я смущен - что вы думаете, что ОП сделал не так? OP содержит в командной строке '-DgeneratePom = true'. –

+0

Насколько я понял эту проблему, ОП пытается заменить плагин, который уже работал, с собственной реализацией. У исходного плагина, похоже, есть зависимости от других банок, которые не загружаются, потому что модифицированный плагин использует сгенерированный 'pom.xml' вместо pom с правильной секцией' dependencies'. – nif

+0

Это отличный ответ - попробуйте и переплетайте часть этой формулировки в тело вашего ответа, так как не было видно, что это был ваш смысл. –