Question

J'ai écrit un plugin Maven pour récupérer l'adresse IP de la machine et j'aimerais pouvoir créer une propriété afin que l'adresse IP soit filtrée dans un fichier (via $ {ipaddress}) lors de la génération d'un archétype.

Je n'ai pas réussi à trouver comment faire cela. Est-ce que quelqu'un sait?

Était-ce utile?

La solution

Le properties-maven-plugin lit les propriétés d'un fichier et les rend disponible pour une construction comme si elles avaient été définies en ligne.

Vous pouvez demander à votre plug-in de générer l'adresse IP dans un fichier, puis d'utiliser le plug-in de propriétés pour le lire, ou pincez le source du plug-in de propriétés pour définir la propriété dans votre propre plug-in.

En gros, il vous suffit d’obtenir les propriétés du projet Maven et d’ajouter votre / vos propre (s) entrée (s).

Autres conseils

Vous pouvez utiliser le plugin org.codehaus.groovy.maven pour obtenir une adresse IP et la 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 pour les étapes suivantes comme n'importe quel autre accessoire maven, c'est-à-dire sous la forme $ {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>

Le problème est que vos propriétés sont traitées avant , et que vous ne pouvez pas écraser lors de la génération . Au moins, c’est ce que j’aurais aimé savoir si j’avais tort et même accepter les points négatifs :) Donc une possibilité - créer un script qui exécute votre programme, renseigne la propriété système puis exécute mvn build juste après (je sais que c'est moche)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top