Pregunta

en mi pom he añadido el ejecutivo-maven-plugin para llamar a una clase Java que generará un archivo. Esta clase requiere algunos parámetros que se pasan al método principal, uno de ellos es la ubicación de un archivo de entrada (fuera del proyecto). Hasta ahora he estado utilizando una ruta relativa para este que funciona muy bien:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>test</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.laco.projectmaster.util.LanguageGenerator</mainClass>
                <arguments>
                    <argument>../PM-Config/dev/PMLanguage.xls</argument>
                    <argument>PM4.0</argument>
                    <argument>${project.build.outputDirectory}/com/laco/projectmaster/props/resources</argument>
                    <argument>ProjectMaster</argument>
                    <argument>Created during maven build (POM Version: ${pom.version})</argument>
                </arguments>
            </configuration>
        </plugin>

Ahora estoy empezando a utilizar para instalar Hudson / paquete y desplegar las guerras y no puedo ya utilizar esta ruta relativa. Me pensamiento simple, que sólo tiene que pasar la ubicación del archivo de entrada al invocar maven como:

paquete limpio mvn -Dlangdir = C: / somedir

y luego altera el pom como:

<argument>${langdir}/PMLanguage.xls</argument>

Sin embargo, este parámetro sólo se tendrá en cuenta aquí. La ruta de la clase principal recibe como argumento se hace nula / PMLanguage.xls . El parámetro en sí está disponible en experta, he probado con éxito utilizando un eco en el antRun plugin. La ruta correcta se hizo eco.

¿Las paremeters se pasan a Maven entonces no disponibles por defecto sin importar dónde se les hace referencia en el POM?

gracias por cualquier ayuda,
Stijn

¿Fue útil?

Solución

No puedo reproducir el problema. He utilizado la siguiente clase de prueba:

package com.stackoverflow.q3421918;

public class Hello
{
    public static void main( String[] args )
    {
        System.out.println( args[0] + " " + args[1] );
    }
}

Y la siguiente pom.xml:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.stackoverflow.q3421918</groupId>
  <artifactId>Q3421918</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!-- this was a test for a workaround -->
  <properties>
    <myprop>${langdir}</myprop>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <phase>test</phase>
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>com.stackoverflow.q3421918.Hello</mainClass>
          <arguments>
            <argument>${myprop}</argument>
            <argument>${langdir}</argument>
          </arguments>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Y aquí está la salida me sale:

$ mvn clean package -Dlangdir=C:/somedir 
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Q3421918
[INFO]    task-segment: [clean, package]
[INFO] ------------------------------------------------------------------------
...
[INFO] Preparing exec:java
[WARNING] Removing: java from forked lifecycle, to prevent recursive invocation.
[INFO] No goals needed for project - skipping
[INFO] [exec:java {execution: default}]
Hello c:/somedir c:/somedir
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
...

Probado con Maven 2.2.1.

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