2010-12-04 6 views
6

Ich habe eine pom.xml mit definierten Eigenschaft module.basedir, die dazu bestimmt ist, basedir Eigenschaft enthalten umgewandelt. Es ist wie folgt definiert:

Und ich habe folgenden Code, mgroovy Plugin ausgeführt wird, unter Verwendung von:

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

Später verwende ich diese Eigenschaft in anderen Plugins. Das funktioniert gut, bis ich Plugin-Definitionen in Maven-Profil verschiebe. Und wenn Maven Profil aktiviert ist funktioniert mgroovy Plugin gut, aber wenn ich auf Eigenschaft im nächsten Plugin zugreifen, bekomme ich unmodifizierten Wert. Diese

ist, wie ich diese Eigenschaft zugreifen:

${module.basedir} 

Es ist wie es aussieht, wenn Profil ausgeführt wird, erstellt eigene Kopien von Eigenschaften in Projekt definiert und sie verwendet werden, wenn sie von Plugins verwiesen.

Irgendwelche Vorschläge?

Antwort

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

So müssen Sie diese Zeile ersetzen:

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

mit

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

Der Grund, warum Sie 4 Schrägstriche müssen, ist, weil jeder der Doppelschrägstriche in der Quelle String (path in meinem Beispiel) muss maskiert werden.

+0

Dies ist nicht der Fall, ich kann String in der Ausgabe geändert sehen. Der Punkt ist, dass wenn ich ** print $ {module.basedir} schreibe ** ich immer noch den ursprünglichen Wert bekomme. –

2

Ich konfrontiert mit dem gleichen Problem mit gmaven-Plugin für Windows EJB-Modul Beschreibung zu erstellen. Ich bin nicht klug in Groovy, aber dieser Ansatz funktioniert für mich:

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