2010-12-04 18 views
6

Tengo un pom.xml con propiedad definida module.basedir que está destinado a contener transformado basedir propiedad. Se define de la siguiente manera:

Y he siguiente código que se ejecuta usando el plugin de mgroovy:

<source> 
    println project.properties['module.basedir'] 
    project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/'); 
    println project.properties['module.basedir'] 
</source> 

Más tarde me utilizar esta propiedad en otros plugins. Esto funciona bien hasta que mueva las definiciones de plugins al perfil de maven. Y cuando se activa el perfil de maven, el plugin de mgroovy funciona bien, pero cuando accedo a la propiedad en el siguiente complemento obtengo un valor sin modificar.

Éste es cómo acceder a este inmueble:

${module.basedir} 

Parece que cuando se ejecuta el perfil que crea propias copias de propiedades definidas en el proyecto y se utilizan cuando se hace referencia a partir de los plugins.

¿Alguna sugerencia?

Respuesta

0
String path = '\\a\\b\\c' 
assert path.replaceAll('\\\\', '/') == '/a/b/c' 

por lo que necesita para reemplazar esta línea:

project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/'); 

con

project.properties['module.basedir']=project.properties['module.basedir'].replace('\\\\','/'); 

La razón necesita 4 barras invertidas, es porque cada una de las dobles barras invertidas en la cadena de origen (path en mi ejemplo) debe ser escapado.

+0

Este no es el caso, puedo ver una cadena modificada en la salida. El punto es que cuando escribo ** imprime $ {module.basedir} ** todavía obtengo el valor original. –

2

Me enfrenté con el mismo problema al usar gmaven-plugin en Windows para crear la descripción del módulo EJB. No soy un experto en Groovy, pero este enfoque funciona para mí:

def basedir = project.properties['module.basedir'].replace('\\','/') 
def md = (basedir + "/target/module.xml" as File) 
Cuestiones relacionadas