2012-11-05 8 views
77

मैवेन 3.0.4 का उपयोग कर रहा हूं और बिल्डिंग टाइमस्टैम्प को मेरे एप्लिकेशन के लिए सुलभ बनाना चाहता हूं। इसके लिए, मैं .properties फ़ाइल में प्लेसहोल्डर डाल रहा हूं और मेवेन को बिल्ड पर फ़िल्टर कर दूंगा। हालांकि यह ${project.version} के लिए ठीक काम कर रहा है, ${maven.build.timestamp} फ़िल्टरिंग पर प्रतिस्थापित नहीं है।संसाधन फ़िल्टरिंग के लिए maven.build.timestamp तक कैसे पहुंचे

संपत्ति निर्माण पर उपलब्ध हो रहा है - मैं विरूपण साक्ष्य नाम संशोधित करने के लिए उपयोग कर सकते हैं:

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

तो क्यों यह नहीं संसाधन को छानने के लिए उपलब्ध है? और, सबसे महत्वपूर्ण बात यह है कि मैं इसे कैसे सुलभ बना सकता हूं?

उत्तर

165

मैंने this article खोजा है, यह बताते हुए कि bug in maven के कारण, बिल्ड टाइमस्टैम्प फ़िल्टरिंग के लिए प्रचारित नहीं होता है। वैकल्पिक हल एक और संपत्ति में टाइमस्टैम्प रैप करने के लिए है:

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

छनन तो के रूप में के लिए

buildTimestamp=${timestamp} 
+1

बस दूसरों के लिए एक नोट, मुझे इसके साथ समस्या थी, क्योंकि मैं एक्लिप्स के भीतर टोमकैट का उपयोग कर रहा हूं और ऐसा लगता है कि यह ठीक काम नहीं कर रहा है - प्रतिस्थापन 'लक्ष्य/$ {प्रोजेक्ट} 'फ़ोल्डर में ठीक है, लेकिन मेरे actuall कॉन्फ़िगरेशन Tomcat इस फ़ोल्डर का उपयोग नहीं कर रहा है ... – Betlista

+3

@Betlista हाँ, ग्रहण में सर्वर एकीकरण स्रोत निर्देशिका का उपयोग करने लगता है। यह कारणों में से एक था कि मैंने ग्रहण एकीकरण को छोड़ दिया और कमांड लाइन से मेवेन का उपयोग किया। – kostja

+1

यह देखते हुए कि एक पोम में कई जगहें हैं जहां मुझे टाइमस्टैम्प की आवश्यकता है, लेकिन विभिन्न प्रारूपों में (उदाहरण के लिए फ़ाइल नाम और बिल्ड टाइम स्ट्रिंग), मैं कई बार 'maven.build.timestamp.format' का उपयोग कैसे कर सकता हूं? –

2

आदेश दूसरों के लिए Stackoverflow सामग्री को बेहतर बनाने के लिए उम्मीद से काम करता है, कि मेरी तरह, एक के रूप में इस पोस्ट पाया ${maven.build.timestamp} की "समस्या" को हल करने का तरीका। यह एक मैवेन बग नहीं है, लेकिन एम 2e का एक अपेक्षित व्यवहार है, जैसा कि this post में देखा जा सकता है।

इसलिए, मेरा मानना ​​है कि हम समाधान को "सही" होने की उम्मीद नहीं कर सकते हैं, क्योंकि, जो मैं समझता हूं, सुधार में वैचारिक मुद्दों को शामिल किया गया है।

मेरे मामले में, मैंने जो किया वह प्लगइन (buildnumber-maven-plugin) का उपयोग इस other post में वर्णित है।

+0

के संयोजन के साथ उपयोग किए जाने पर पूरी तरह से काम करता है, मुझे इसी तरह की समस्याओं के लिए 'buildnumber-maven-plugin' मिला, अर्थात् यह जो चर उत्पन्न करता है वह केवल कुछ संदर्भों में उपलब्ध है, फ़िल्टरिंग नहीं। आप निष्पादन चरण या लक्ष्यों के साथ टंकण करके उस पर काबू पाने में सक्षम नहीं हो सकते हैं, लेकिन अंतर्निहित समाधान इतना आसान लगता है। – MarkHu

संबंधित मुद्दे