Domanda

Ho scritto un plugin Maven per afferrare l'indirizzo IP della macchina e vorrei essere in grado di creare una proprietà in modo che l'indirizzo IP venga filtrato in un file (tramite $ {ipaddress}) quando si verifica la generazione dell'archetipo.

Non sono stato in grado di trovare come farlo. Qualcuno lo sa?

È stato utile?

Soluzione

Il properties-maven-plugin legge le proprietà da un file e le rende disponibile per una build come se fossero stati definiti in linea.

Puoi fare in modo che il tuo plugin emetta l'ip su un file, quindi usa il plugin delle proprietà per leggerlo o pizzica fonte dal plugin proprietà per impostare la proprietà nel proprio plugin.

Essenzialmente ottieni le Proprietà da MavenProject e aggiungi le tue voci.

Altri suggerimenti

Puoi usare il plugin org.codehaus.groovy.maven per ottenere l'IP e impostarlo su oggetti di scena. Nel mio esempio ho impostato l'IP recuperato su localIP della proprietà ed è disponibile nelle fasi successive come qualsiasi altro oggetto di scena, ad esempio $ {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>

Bene, il problema è che le tue proprietà vengono elaborate prima di eseguire la build e non possono essere sovrascritte durante la build. Almeno questa è la mia esperienza, mi piacerebbe essere smentito e anche accettare punti negativi per quello :) Quindi una possibilità: creare uno script che esegue il programma, popola le proprietà di sistema e quindi esegue mvn build subito dopo (so che è brutto)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top