2009-10-22 12 views

Répondre

1

properties-maven-plugin lit les propriétés d'un fichier et les rend disponibles à une génération comme si elles avaient été définies en ligne.

Vous pouvez faire en sorte que votre plugin envoie l'adresse IP à un fichier, puis utilisez le plugin properties pour le lire, ou pincez le source depuis le plugin properties pour définir la propriété dans votre propre plugin. Pour l'essentiel, vous obtenez simplement les propriétés du projet MavenProject et ajoutez vos propres entrées.

+0

Le plugin fait juste cela ... attrape les propriétés du projet et ajoute sur votre adresse IP. Le problème que j'ai est que je ne peux pas réellement faire fonctionner le plugin quand vous exécutez "mvn archetype: generate". C'est quand je voudrais que cela se produise afin que le projet généré ait déjà la valeur. –

0

Eh bien, le problème est - vos propriétés sont traitées avant vous exécutez la construction et ne peuvent être réécrits pendant la construction. Au moins, c'est mon expérience, je voudrais être mal prouvé et même accepter des points négatifs pour cela :) Donc, une possibilité - créer un script qui exécute votre programme, remplit la propriété système, puis exécute mvn build juste après (je sais que c'est moche)

+0

N'y a-t-il pas d'autres plugins qui font cela, cependant? Comme le plugin BuildNumber? J'ai essayé de le voir, mais c'est beaucoup plus complexe que de simplement définir une propriété. Je ne sais pas ce qui est vraiment disponible pour le plugin. –

+0

Pourrait être, pourrait être ... J'ai eu un problème où j'essayais de déclencher l'exécution du profil basé sur la propriété définie à la fois dans le parent et le module enfant et j'ai découvert qu'une fois définie - la propriété ne change jamais – Bostone

1

Vous pouvez utiliser le plugin org.codehaus.groovy.maven pour obtenir IP et le définir comme accessoire. Dans mon exemple, j'ai défini l'adresse IP récupérée sur la propriété localIP et elle est disponible sur les prochaines étapes comme n'importe quel autre accessoire maven, c'est-à-dire $ {localIP}.

    <plugin> 
        <groupId>org.codehaus.groovy.maven</groupId> 
        <artifactId>gmaven-plugin</artifactId> 
        <version>1.0</version> 
        <executions> 
         <execution> 
         <id>get-local-ip</id> 
         <phase>initialize</phase> 
         <goals> 
          <goal>execute</goal> 
         </goals> 
         <configuration> 
          <classpath> 
          <element> 
           <groupId>commons-lang</groupId> 
           <artifactId>commons-lang</artifactId> 
           <version>2.4</version> 
          </element> 
          </classpath> 
          <source> 
           java.net.InetAddress address=InetAddress.getByName("${env.COMPUTERNAME}"); 
           project.properties.localIP=address.getHostAddress(); 
          </source> 
         </configuration> 
         </execution> 
        </executions> 
       </plugin>