2009-09-08 12 views
8

En mi proyecto actual, utilizamos algunos complementos necesarios para otros parámetros de complementos, como propiedades-maven-plugin o buildnumber-plugin.Cómo vincular un objetivo de complemento a otro objetivo de complemento

<?xml version="1.0"?> 
<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>mygroup</groupId> 
    <artifactId>myartifact</artifactId> 
    <packaging>pom</packaging> 
    <version>v0</version> 
    <name>myProject</name> 

    <properties> 
      <env>dev</env> 
    </properties> 

    <build> 
     <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>properties-maven-plugin</artifactId> 
      <version>1.0-alpha-2</version> 
      <configuration> 
      <files> 
       <file>${basedir}/configurations/${env}.properties</file> 
      </files> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>initialize</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>buildnumber-maven-plugin</artifactId> 
      <version>1.0-beta-3</version> 
      <executions> 
       <execution> 
        <phase>initialize</phase> 
        <goals> 
         <goal>create</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>com.wakaleo.schemaspy</groupId> 
      <artifactId>maven-schemaspy-plugin</artifactId> 
      <version>1.0</version> 
      <configuration> 
       <databaseType>mysql</databaseType> 
       <database>${database.schema}</database> 
       <host>${database.host}</host> 
       <user>${database.user}</user> 
       <password>${database.pwd}</password> 
       </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

El problema es que cuando se ejecuta directamente un objetivo plugin, objetivos encuadernados en la fase de inicialización (o validar) no se ejecutan. Así que para generar espía esquema tenemos que escribir:

$> mvn org.codehaus.mojo:properties-maven-plugin:read-project-properties schemaspy:schemaspy 

Queremos decir que las propiedades plugin y necesitan ser ejecutados por cada comando experto BuildNumber plug-in para que podamos Tipo:

$> mvn schemaspy:schemaspy 

¿Existe una forma limpia de hacer eso (sin secuencias de comandos)?

Respuesta

6

La forma más sencilla sería la de obligar a la meta schemaspy a una fase del ciclo de vida (especialmente en lo que ya ha hecho esto ffor los otros dos plugins), por lo que a continuación, simplemente puede ejecutar algo así como el paquete mvn y tienen los tres plugins ejecutado en las fases apropiadas.

Si desea que el complemento schmespy solo se ejecute bajo ciertas circunstancias, colóquelo en un perfil, luego ejecute paquete mvn -P schemaspy para activarlo. La configuración para lograr esto se ve así:

<profiles> 
    <profile> 
    <id>schemaspy</id> 
    <plugin> 
     <groupId>com.wakaleo.schemaspy</groupId> 
     <artifactId>maven-schemaspy-plugin</artifactId> 
     <version>1.0</version> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
      <goal>schemaspy</goal> 
      </goals> 
     </execution> 
     </executions> 
     <configuration> 
     <databaseType>mysql</databaseType> 
     <database>${database.schema}</database> 
     <host>${database.host}</host> 
     <user>${database.user}</user> 
     <password>${database.pwd}</password> 
     </configuration> 
    </plugin> 
    </profile> 
</profile> 
+0

Nunca lo pensó. Me gusta. Gracias. – noirbizarre

+3

Lo siento, pero esto no me ayuda. ¿Podemos vincular un objetivo a otro objetivo? Necesito calcular el nombre de la rama usando un complemento en el contexto de la bifurcación de una publicación. Sería extraño pedir a los desarrolladores que habiliten un perfil y ejecuten una fase de ciclo de vida para crear una rama, cuando normalmente simplemente ejecutarían 'release: branch' ... –

Cuestiones relacionadas