2014-08-29 4 views
1

Я разрабатываю плагин maven с целью, которая имеет параметр класса.Конфигурация конфигурации плагина Maven для класса

Я хочу настроить эту цель для использования специального класса.

Это мой Mojo из Maven плагин:

/** 
* The used parser. 
* 
* @parameter expression="${parser}" 
*/ 
private EndpointParser parser; 

public void execute() throws MojoExecutionException { 

Это мой pom.xml проекта с использованием плагина:

... 
<plugins> 
     <plugin> 
      <groupId>foo</groupId> 
      <artifactId>bar</artifactId> 
      <configuration> 
       <parser>com.foo.bar.MyEndpointParser</parser> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <phase>generate-sources</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
... 

Как я могу получить его работу.

+0

С какой проблемой вы сталкиваетесь? Является ли 'com.foo.bar.MyEndpointParser' частью вашего плагина или проекта, который использует ваш плагин? – ooxi

+0

Какова цель плагина? Почему вы используете старые вещи xdoclet стиля вместо [Java 5 Annotation] (http://maven.apache.org/plugin-tools/maven-plugin-tools-annotations/index.html)? – khmarbaise

+0

@ooxi 'MyEndPointParser' объявляется в другой зависимости от maven вызывающего проекта. – matcauthon

ответ

2

Если MyEndPointParser не является частью вашего плагина, но другой проект (который не является зависимой от вашего плагина), вы должны объявить его как зависимость не от вашего проекта, а от вашего плагина, например.

<plugins> 
    <plugin> 
     <groupId>foo</groupId> 
     <artifactId>bar</artifactId> 
     <configuration> 
      <parser>com.foo.bar.MyEndpointParser</parser> 
     </configuration> 

     <dependencies> 
      <dependency> 
       <groupId>foo</groupId> 
       <artifactId>contains-my-endpoint-parser</artifactId> 
      </dependency> 
     </dependencies> 

     <executions> 
      <execution> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
       <phase>generate-sources</phase> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 
+0

Вот и все. Спасибо! – matcauthon

0

Я думаю, что это должно работать:

<configuration> 
    <parser implementation="com.foo.bar.MyEndpointParser"/> 
</configuration> 

Однако, это, вероятно, проще, если настроить MyEndpointParser как Component. Я не могу найти для него документацию up2date. Вы могли бы взглянуть на источники плагина maven-compiler. Там у вас есть параметр для compilerId для переключения между реализациями.

+0

Не работает. Он не может найти данный класс. Любая помощь? – matcauthon

+0

убедитесь, что он находится на пути к классу плагина. –

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