2009-09-15 5 views

Respuesta

14

Puede hacerlo definiendo un ciclo de vida personalizado e invocando ese ciclo de vida antes de que su Mojo se ejecute a través de la anotación execute.

En su Mojo, declaran en el Javadoc del ciclo de vida para ser ejecutado:

/** 
* Invoke the custom lifecycle before executing this goal. 
* 
* @goal my-goal 
* @execute lifecycle="my-custom-lifecycle" phase="process-resources" 
*/ 
public class MyMojo extends AbstractMojo { 
... 

a continuación, definir un ciclo de vida personalizada en src/main/resources/META-INF/experto/lifecycle.xml.

El ciclo de vida es un poco como plexus 'components.xml, pero le permite especificar la configuración para esos objetivos.

Tenga en cuenta que la sintaxis es ligeramente diferente de las configuraciones del complemento en el pom. Usted define un objetivo usando: como un separador en lugar de especificar los elementos separados de groupId, artifactId y versión, de lo contrario es mayormente la misma notación que el elemento de ejecución de una configuración de complemento en el pom. Incluso puede usar algunas propiedades en lifecycle.xml (aunque posiblemente no todas las propiedades sean compatibles, tendré que verificarlo).

El siguiente ejemplo invoca la dependencia Plugin dos veces con diferentes configuraciones en la fase de proceso de recursos:

<lifecycles> 
    <lifecycle> 
    <id>download-dependencies</id> 
    <phases> 
     <phase> 
     <id>process-resources</id> 
     <executions> 
      <execution> 
      <goals> 
       <goal> 
       org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies 
       </goal> 
      </goals> 
      <configuration> 
       <includeScope>compile</includeScope> 
       <includeTypes>war</includeTypes> 
       <overWrite>true</overWrite> 
       <outputDirectory> 
       ${project.build.outputDirectory}/wars 
       </outputDirectory> 
      </configuration> 
      </execution> 
      <execution> 
      <goals> 
       <goal> 
       org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies 
       </goal> 
      </goals> 
      <configuration> 
       <includeScope>compile</includeScope> 
       <includeTypes>jar</includeTypes> 
       <overWrite>true</overWrite> 
       <outputDirectory> 
       ${project.build.outputDirectory}/jars 
       </outputDirectory> 
      </configuration> 
      </execution> 
     </executions> 
     </phase> 
    </phases> 
    </lifecycle> 
</lifecycles> 

Con este enfoque, el plugin dependencia será invocado una vez con cada configuración en la fase de process-resources de la forma de horquilla ciclo de vida (todo sucede dentro de la ejecución definida en el Mojo).

En lifecycle.xml, puede definir múltiples fases y múltiples ejecuciones por fase del ciclo de vida. Las fases disponibles se definen en el Maven lifecycle.

Puede encontrar más información sobre ciclos de vida en la sección Creating a Custom Lifecycle del libro de Maven. Sin embargo, no proporciona una lista exhaustiva de lo que está permitido. La única otra referencia que sé que es del Maven 2 alpha, por lo que posiblemente no es tan actualizado

+0

gracias esto parece que debería funcionar. ¿Sabes dónde puedo encontrar el contenido permitido en lifecycle.xml? –

+0

He agregado algunas referencias al final de la respuesta. No sé de una referencia canónica aunque –

+0

existe la referencia de Maven's Lifecycle.xml [aquí] (http://maven.apache.org/ref/2.2.1/maven-plugin-descriptor/lifecycle-mappings.html), aunque no tiene mucha más información de la que proporciona el ejemplo. – prunge

Cuestiones relacionadas