2015-10-22 3 views
1

У нас есть настраиваемый плагин maven, который генерирует некоторые артефакты кода для нашего проекта. Плагин настроил жизненный цикл следующим образом: фаза «генерации ресурсов» вызывает наш пользовательский класс.Maven plugin - параметры прохождения к фазе жизненного цикла

<?xml version="1.0" encoding="UTF-8"?> 
<component-set> 
    <components> 
     <component> 
      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role> 
      <role-hint>zip</role-hint> 
      <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation> 
      <configuration> 
       <phases> 
        <generate-resources>com.b.e:productconfig-maven-plugin:generate</generate-resources> 
        <package>com.b.e:productconfig-maven-plugin:zip</package> 
        <install>org.apache.maven.plugins:maven-install-plugin:install</install> 
        <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy> 
       </phases> 
      </configuration> 
     </component> 
    </components> 
</component-set> 

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

<?xml version="1.0" encoding="UTF-8"?> 
<component-set> 
    <components> 
     <component> 
      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role> 
      <role-hint>zip</role-hint> 
      <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation> 
      <configuration> 
       <phases> 
        <generate-resources>com.b.e:productconfig-maven-plugin:generate -Dmojo.param=A</generate-resources> 
        <generate-resources>com.b.e:productconfig-maven-plugin:generate -Dmojo.param=B</generate-resources> 
        <package>com.b.e:productconfig-maven-plugin:zip</package> 
        <install>org.apache.maven.plugins:maven-install-plugin:install</install> 
        <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy> 
       </phases> 
      </configuration> 
     </component> 
    </components> 
</component-set> 

но выдает эту ошибку.

[ERROR] Could not find goal 'generate -Dmojo.param=A' in plugin com.b.e:productconfig-maven-plugin:1.0.6-SNAPSHOT among available goals generate, zip -> [Help 1] 
org.apache.maven.plugin.MojoNotFoundException: Could not find goal 'generate -DoutputFileBaseDir=/home/poc/b/product_configuration/productconfig-maven-plugin/target/generated/delta' in plugin com.b.e:productconfig-maven-plugin:1.0.6-SNAPSHOT among available goals export, generate 
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getMojoDescriptor(DefaultMavenPluginManager.java:267) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.getMojoDescriptor(DefaultBuildPluginManager.java:185) 
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecution(DefaultLifecycleExecutionPlanCalculator.java:152) 
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecutions(DefaultLifecycleExecutionPlanCalculator.java:139) 
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:116) 
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:129) 
    at org.apache.maven.lifecycle.internal.BuilderCommon.resolveBuildPlan(BuilderCommon.java:92) 

Кто-нибудь знает способ правильно передать параметры на фазу жизненного цикла?

ответ

2

Есть два вопроса, в основном с тем же требованием, ни один из них с ответом:

Я уверен, что это «отображение жизненного цикла со свойством/parameter definition "не будет работать.

В объявлениях component.xml указывается, какая цель привязана к определенной фазе жизненного цикла, a.k.a. отображение жизненного цикла. Другими словами, и в моем понимании:

  • Это о , что выполняется, если передается фаза во время сборки перспективе.
  • Это не о как это делается. не

Ни одна из ссылок:

упоминает:

  1. Связывание более одной цели к фазе.

    С DefaultLifecycleMapping.getPhases(...) возвращает Map, где ключ обозначает фазу, что это невозможно вообще.

  2. Целевое связывание с определением свойства/параметра.

    Часть сообщения Could not find goal 'generate -Dmojo.param=A' вашего сообщения об ошибке сообщает мне, что полная строка цели цели считается именем цели, при этом никакое дальнейшее извлечение аргумента не применяется.

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