2012-11-05 17 views
77

maven 3.0.4 kullanıyorum ve uygulama zaman damgası uygulamam için erişilebilir olmasını istiyorum. Bunun için, .properties dosyasında bir yer tutucu koyarım ve maven filtresini yapıyorum. Bu, ${project.version} için iyi çalışıyor olsa da, ${maven.build.timestamp} filtreleme yerine sübstitüe edilmemiştir.Kaynak filtreleme için maven.build.timestamp'a nasıl erişilir?

mülkiyet yapı üzerinde mevcut gibi görünüyor - Ben yapay adını değiştirmek için kullanabilirsiniz:

Öyleyse neden kaynak filtreleme için kullanılamaz

<finalName>${project.artifactId}-${maven.build.timestamp}</finalName>

? Ve daha önemlisi, onu nasıl erişilebilir yapabilirim?

cevap

165

bug in maven nedeniyle, oluşturma zaman damgasının filtrelemeye yayılmadığını açıklayan this article'u keşfettim. geçici çözüm başka özelliğinde damgası sarılmasıdır: benim gibi bu yazı bulduğunu diğerleri için Stackoverflow içeriğini zenginleştirmek amacıyla

buildTimestamp=${timestamp} 
+1

Diğerleri için bir not, bununla ilgili bir sorunum vardı, çünkü Eclipse içinde Tomcat kullanıyorum ve işe yaramıyor, iyi çalışmıyor - değiştirme hedef/$ {project} klasöründe tamam, ama benim actuall yapılandırması Tomcat bu klasörü kullanmıyor ... – Betlista

+3

@Betlista evet, eclipse'deki sunucu bütünleştirmesi kaynak dizini kullanıyor gibi görünüyor. Tutulma entegrasyonunu terk etmem ve maven'i komut satırından kullanmamın nedenlerinden biriydi. – kostja

+1

Bir zaman damgasına ihtiyaç duyduğum, ancak farklı biçimlerde (örneğin, bir dosya adı ve bir oluşturma zamanı dizesi) bir pom içinde birden fazla yer olduğu göz önüne alındığında, maven.build.timestamp.format işlevini birden çok kez nasıl kullanabilirim? –

2

için beklendiği gibi Filtreleme sonra çalışır

<properties> 
    <timestamp>${maven.build.timestamp}</timestamp> 
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format> 
</properties> 

, ${maven.build.timestamp}'un "problemini" çözme yolu. Bu, bir maven hatası değil, this post'da görülebileceği gibi m2e'nin beklenen bir davranışıdır. Bu nedenle, çözümün “düzeltilmiş” olmasını bekleyemeyeceğimize inanıyorum, çünkü anladığım kadarıyla, düzeltme kavramsal konuları içerir.

Benim durumumda, bu other post numaralı belgede açıklandığı gibi eklentiyi kullanmıştım (buildnumber-maven-plugin).

+0

ile birlikte kullanıldığında, benzer problemlere sahip olmanın 'buildnumber-maven-plugin' olduğunu, yani oluşturduğu değişkenin yalnızca belirli bağlamlarda değil, filtrelemede olduğunu buldum. Yürütme aşaması veya hedefleri ile uğraşmaktan kurtulabilirsiniz, ancak yerleşik çözüm çok daha basit görünüyor. – MarkHu