2008-10-03 4 views
9

में वर्तमान svn संशोधन प्राप्त करें जावा वेबपैप में संशोधन संख्या को प्रदर्शित/उपयोग करने का सबसे अच्छा तरीका क्या है?वेबपैप

हम केवल हमारे .war संग्रह, कोई बिल्डर्स या ऐसा बनाने के लिए चींटी का उपयोग नहीं करते हैं। मुझे उम्मीद है कि कुछ प्रकार का था अगर $ ref ref कि मैं संसाधन फ़ाइल में लिख सकता हूं, लेकिन यह केवल तभी अपडेट किया जाता है जब प्रश्न में फ़ाइल प्रतिबद्ध होती है। मुझे इसे वैश्विक स्तर पर चाहिए।

आप क्या सलाह देंगे? पोस्ट-ट्रिगर ट्रिगर्स जो कुछ फ़ाइलों को अपडेट करते हैं? कस्टम चींटी स्क्रिप्ट्स? क्या ऐसा करने का एक और गैर-हैकी तरीका है? या यह मेरे संस्करण संस्करण svn से स्वतंत्र होना बेहतर है।

संपादित करें: महान सुझाव! उत्तर के लिए बहुत बहुत धन्यवाद!

उत्तर

3

कुछ चींटी कार्य हैं जो आपके लिए यह कर सकते हैं।

SvnAnt task टिग्रीस से सबसे पुराना है।

प्रलेखन here है - विशेष रूप से info तत्व है जो एक चींटी संपत्ति है जो यह कहता है rev रूप सववर्सन रिपॉजिटरी के संशोधन संख्या को उजागर करता है पर एक नज़र डालें। आप सामान्य मूल्य प्रतिस्थापन तंत्र का उपयोग करके इस मूल्य को अपने resouces फ़ाइल में लिख सकते हैं।

किसी ने भी Google कोड होस्टिंग पर simillar (simpler) task डाल दिया है - कभी भी इसका उपयोग नहीं किया गया है, इसलिए टिप्पणी नहीं कर सकता है।

इनमें से कोई भी मेरे लिए सबसे अच्छा तरीका प्रतीत होता है यदि आपके पास पहले से ही आपके निर्माण में चींटी है।

1

this thread देखें।

उस धागे से मेरा पसंदीदा सिर्फ आपके कोड में $Id:$ डंप कर रहा है जहां आप संशोधन आईडी चाहते हैं। जब आप निर्यात करते हैं तो वास्तविक डेटा के साथ एसवीएन पॉप्युलेट करेगा।

1

यदि आप विंडोज़ का उपयोग कर रहे हैं तो आप कछुआ के साथ आता है SubWCRev.exe देख सकते हैं।

यह वर्तमान भंडार संशोधन देता है और कहा जाता है कि $ WCREV $ को प्रतिस्थापित करेगा, आप इसे अपने वेब.एक्सएमएल में एक संदर्भ पैराम के रूप में शामिल कर सकते हैं और फिर इसे वहां से प्राप्त कर सकते हैं।

0

वेबपैप पैक होने से पहले, svn जानकारी चलाएं और आउटपुट को वेब-आईएनएफ/कक्षाओं में कुछ फ़ाइल में रीडायरेक्ट करें। जब वेबपैप शुरू होता है, तो इस फ़ाइल को पार्स करें और इसे सर्वलेट संदर्भ या कुछ समान स्थान पर छीन लिया है। प्रत्येक पृष्ठ के पाद लेख में, इस संस्करण को प्रदर्शित करें - यदि आप टाइल्स या साइटमेश जैसे कुछ उपयोग कर रहे हैं, तो यह परिवर्तन केवल एक फ़ाइल में ही किया जाना चाहिए।

मेवेन उपयोगकर्ता मैवेन-बिल्डनंबर प्लगइन को आजमा सकते हैं।

6

हम जार में एक विशेषता में SVN संस्करण शामिल करने के लिए निम्नलिखित चींटी कार्य का उपयोग करें, कि

<target name="package" depends="compile" description="Package up the project as a jar"> 
<!-- Create the subversion version string --> 
<exec executable="svnversion" failifexecutionfails="no" outputproperty="version"> 
    <arg value="."/> 
    <arg value="-n"/> 
</exec> 
<!-- Create the time stamp --> 
<tstamp> 
    <format property="timeAndDate" pattern="HH:mm d-MMMM-yyyy"/> 
</tstamp> 

<jar destfile="simfraserv.jar"> 
    <manifest> 
    <attribute name="Built-By"    value="${user.name} on ${time.date}" /> 
    <attribute name="Implementation-Version" value="${svn.version}" /> 
    <attribute name="Implementation-Java"  value="${java.vendor} ${java.version}" /> 
    <attribute name="Implementation-Build-OS" value="${os.name} ${os.arch} ${os.version}" /> 
    <attribute name="JVM-Version"    value="${common.sourcelevel}+" />   
    </manifest> 
    <fileset dir="bin"> 
    <include name="**/*.class"/> 
    </fileset> 
    <fileset dir="src"> 
    <include name="**"/> 
    </fileset> 
</jar> 
</target> 

इस्तेमाल किया जा रहा अन्य संकुल की संस्करण के साथ और फिर आप अपने webapp में उस तक पहुँच सकते की तरह इस

String version = this.getClass().getPackage().getImplementationVersion(); 
4

आप उपयोग कर रहे हैं चींटी आप इस कार्य को परिभाषित कर सकते हैं:

<target name="version"> 
<exec executable="svn" output="svninfo.xml" failonerror="true"> 
    <arg line="info --xml" /> 
</exec> 
<xmlproperty file="svninfo.xml" collapseattributes="true" /> 
<echo message="SVN Revision: ${info.entry.commit.revision}"/> 
<property name="revision" value="${info.entry.commit.revision}" /> 
</target> 

और आप संशोधन मूल्य जहां आप चाहते हैं।

+0

मैं इस समाधान को पसंद करता हूं क्योंकि यह सरल और बॉक्स से बाहर है। – amotzg