2010-12-04 20 views
6

Ben basedir özelliği değiştirdi içeren amaçlanmaktadır tanımlanan özellik module.basedir ile pom.xml var. Bu şu şekilde tanımlanmıştır:

Ve mgroovy eklentisi kullanarak yürütülür kod vardır:

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

Daha sonra diğer eklentileri de bu özelliğini kullanın. Bu eklenti tanımlarını maven profiline taşıyana kadar iyi çalışıyor. Ve maven profili aktive edildiğinde, mgroovy eklentisi iyi çalışıyor, ancak bir sonraki eklentide mülke eriştiğimde, değiştirilmemiş bir değer elde ediyorum.

${module.basedir} 

Bu profil çalıştırıldığında bu projede tanımlanan özelliklerin kendi kopyalarını oluşturur ve eklentileri başvurulan zaman kullanıldıkları gibi görünüyor:

Bu benim, bu özelliğe erişmek nasıl.

Herhangi bir öneriniz var mı?

cevap

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

Yani bu hat değiştirmeniz gerekiyor:

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

size 4 ters eğik çizgi ihtiyaç nedeni ile

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

, çünkü kaynak dize çift ters eğik her (Örneğimde path) kaçmalı.

+0

Bu değil, çıktıda değiştirilen dize görebilirsiniz. Mesele şu ki, yazdığımda ** print $ {module.basedir} ** hala orijinal değer elde ediyorum. –

2

EJB modülü açıklaması oluşturmak için windows'ta gmaven-plugin kullanarak aynı sorunla karşılaştım. Ben Groovy bir anlayışlı değilim, ama bu yaklaşım benim için çalışıyor:

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