2011-10-14 11 views
11

¿Por qué Maven insiste en tratar cadenas vacías y cadenas de espacios de "valores nulos"? Toma el siguiente pom: recibo el mensaje falso habitual sobre un argumento mal configurado. ¿Cómo puedo hacer para pasar un valor vacío que Maven realmente reconocerá como tal en lugar de atormentarme con absurdos mensajes de error?Argumentos "nulos" versus "vacíos" en Maven

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Misconfigured argument, value is null. Set the argument to an empty value if this is the required behaviour. 

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test</groupId> 
    <artifactId>test</artifactId> 
    <packaging>pom</packaging> 
    <version>0</version> 
    <name>test</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <my.val>    </my.val> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <executions> 
        <execution> 
         <id>Exec test</id> 
         <phase>prepare-package</phase> 
         <goals> 
          <goal>exec</goal> 
         </goals> 
         <configuration> 
          <executable>${env.JAVA_HOME}/bin/java</executable> 
          <arguments> 
           <argument>${my.val}</argument> 
          </arguments> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+0

No estoy seguro de haber encontrado este "mensaje falso" al que se refiere, lo que podría indicar que no es tan habitual. Es posible que desee proporcionar más detalles en lugar de asumir que todos saben de lo que está hablando. –

+0

No puedo ser la única persona que ha visto el mensaje de "argumento mal configurado", porque lo veo constantemente gracias a Mavens, en el mejor de los casos, metodologías altamente idiosincrásicas, pero ahí está. – cbmanica

+0

Interesante. Eso parece una falla del complemento ejecutivo. ¿Ha revisado/archivado un informe de error/mejora para él? –

Respuesta

7

Parece que el problema se ha conocido desde 2007 ->http://mail-archives.apache.org/mod_mbox/maven-users/200708.mbox/%[email protected]%3E

En su caso, usted puede tratar de utilizar el parámetro de configuración <commanlineArgs> lugar.

No es bonito si tiene muchos argumentos, pero si solo tiene uno o dos, puede ser una opción.

<configuration> 
    <executable>${env.JAVA_HOME}/bin/java</executable> 
    <commandlineArgs>${my.val}</commandlineArgs> 
</configuration> 

También he creado un informe de errores en MEXEC Jira: http://jira.codehaus.org/browse/MEXEC-104

ACTUALIZACIÓN

Para suministrar una ruta de clases a través <commandlineArgs>, haga lo siguiente:

<commandlineArgs>-classpath %classpath my.main.class.MyMainClass ${my.val}</commandlineArgs> 

En realidad, el analizador incluso permite plegar la línea larga para que sea más legible, por ejemplo

<commandlineArgs> 
    -classpath %classpath 
    my.main.class.MyMainClass 
    ${my.val} 
</commandlineArgs> 
0

Puede establecer my_val a algún valor propiedad del sistema simulado como -Ddummy=dummy. Sé que no es elegante, pero al menos una solución.

Cuestiones relacionadas