2014-10-28 3 views
3

Я пытаюсь разработать плагин maven, и он не работает, когда я использую аннотацию @Parameter.Невозможно установить параметр с помощью аннотаций на плагин maven

Моей зависимость:

... 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-plugin-api</artifactId> 
     <version>3.2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.plugin-tools</groupId> 
     <artifactId>maven-plugin-annotations</artifactId> 
     <version>3.3</version> 
    </dependency> 
    ... 

Когда я использую:

@Parameter (property = "resources") 
protected String resources; 

ресурсов хранятся в нуле, и когда я изменить его с помощью:

/** 
* @parameter expression="${resources}" 
*/ 
protected String resources; 

ресурсов исполняются. Я исполняю свой плагин, как:

mvn example:goal -Dresources=whatever 

И это мой Mojo декларация:

@Mojo(name = "example", defaultPhase = LifecyclePhase.PROCESS_RESOURCES) 
public class ExampleMojo extends AbstractMojo { 

Есть идеи почему это происходит и что я должен сделать, чтобы получить эту аннотацию работает, как ожидалось?

+0

Вы можете показать свой полный файл POM? – khmarbaise

+0

Привет @khmarbaise Я нашел проблему. Я отправляю его. Спасибо, что пытались помочь. –

ответ

3

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

Первая проблема вызвана мной: На самом деле моя Mojo декларация была такова:

/** 
* my goal 
* 
* @goal example 
* @phase process-sources 
*/ 
@Mojo(name = "example", defaultPhase = LifecyclePhase.PROCESS_RESOURCES) 
public class ExampleMojo extends AbstractMojo { 

Это сделало мою работу плагина из-за замечаний с @goal и @phase. Я думал, что @Mojo выполняет эту работу, но я ошибся.

Вторая проблема эта известная ошибка: http://jira.codehaus.org/browse/MNG-5346

Есть несколько решений, как добавление Maven-плагин-плагин зависимости и несколько дескрипторов П колдовского в. Но я решил обновить свой maven до 3.2.3 и удалить аннотированные комментарии (@goal и @phase), и все приступило к работе, как ожидалось.

Теперь мой харизмы выглядит следующим образом:

@Mojo(name = "example", defaultPhase = LifecyclePhase.PROCESS_RESOURCES) 
public class ExampleMojo extends AbstractMojo {  
    @Parameter(property = "resources") 
    protected String resources; 

    /** 
    * do something nice 
    * @throws MojoExecutionException 
    */ 
    public void execute() throws MojoExecutionException { 
     System.out.println(resources); 
    } 
} 

И для полноты картины это мой П:

<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>com.package</groupId> 
    <artifactId>example</artifactId> 
    <packaging>maven-plugin</packaging> 
    <version>0.1-SNAPSHOT</version> 
    <name>Maven Mojo</name> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <encoding>UTF-8</encoding> 
        <showDeprecation>true</showDeprecation> 
        <compilerArgument>-Xlint:all,-serial</compilerArgument> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven</groupId> 
      <artifactId>maven-plugin-api</artifactId> 
      <version>3.2.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.maven.plugin-tools</groupId> 
      <artifactId>maven-plugin-annotations</artifactId> 
      <version>3.3</version> 
     </dependency> 
    </dependencies> 
</project> 

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

  • Нет связанных вопросов^_^