Pregunta

He escrito un complemento de Maven para obtener la dirección IP de la máquina y me gustaría poder crear una propiedad para que la dirección IP se filtre en un archivo (a través de $ {ipaddress}) cuando ocurra la generación del arquetipo.

No he podido encontrar cómo hacer esto. ¿Alguien sabe?

¿Fue útil?

Solución

El properties-maven-plugin lee las propiedades de un archivo y las crea disponible para una compilación como si se hubieran definido en línea.

Puede hacer que su complemento envíe la ip a un archivo y luego usar el complemento de propiedades para leerlo, o pellizcar el source del complemento de propiedades para configurar la propiedad en su propio complemento.

Esencialmente, solo obtienes las Propiedades del Proyecto Maven y agregas tus propias entradas.

Otros consejos

Puedes usar el plugin org.codehaus.groovy.maven para obtener IP y configurarlo en props. En mi ejemplo, he establecido la IP recuperada en la propiedad localIP y está disponible en las siguientes etapas como cualquier otro utilitario experto, es decir, como $ {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>

Bueno, el problema es que sus propiedades se procesan antes de ejecutar la compilación y no se pueden sobrescribir durante la compilación. Al menos esa es mi experiencia, me encantaría que me demostraran que estoy equivocado e incluso que acepte puntos negativos por eso :) Una posibilidad: crear un script que ejecute su programa, rellene las propiedades del sistema y luego ejecute mvn build justo después (sé que es feo)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top