2012-06-27 13 views
5

कुंजी का प्रयोग करें मैं एक महत्वपूर्ण गुण में परिभाषित का उपयोग करना चाहते इस तरह एक चर के रूप में फाइल:गुण फ़ाइल: के रूप में चर

key1= value1 
key2= value2 
key3= key1 

मैं कोशिश:

key3= {key1} 

या

key3= ${key1} 

लेकिन यह काम नहीं करता है!

कोई विचार कृपया?

उत्तर

12

जावा की अंतर्निहित प्रॉपर्टी क्लास वह नहीं करता जो आप खोज रहे हैं।

लेकिन वहां तीसरे पक्ष के पुस्तकालय हैं जो करते हैं। Commons Configuration वह है जिसे मैंने कुछ सफलता के साथ उपयोग किया है। PropertiesConfiguration कक्षा वही करता है जो आप खोज रहे हैं।

key1=value1 
key2=Something and ${key1} 

कोड इस फ़ाइल का उपयोग करता है इस प्रकार दिखाई देंगे:

CompositeConfiguration config = new CompositeConfiguration(); 
config.addConfiguration(new SystemConfiguration()); 
config.addConfiguration(new PropertiesConfiguration("my.properties")); 

String myValue = config.getString("key2"); 

myValue"Something and value1" हो जाएगा

तो आपको लगता है कि इस तरह दिखता है my.properties नाम की एक फ़ाइल हो सकता है।

0

जब आप गुण फ़ाइल में किसी कुंजी के मान को परिभाषित करते हैं, तो इसे शाब्दिक मान के रूप में पार्स किया जाएगा। तो जब आप key3= ${key1} को परिभाषित करते हैं, तो कुंजी 3 में "$ {key1}" का मान होगा।

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Properties.html#load(java.io.InputStream)

मैं क्रिस्टोफ़र स्ट्रीट डे से सहमत हैं, सादा विन्यास फाइल अपनी पसंद नहीं हो सकता। मैं, अपाचे चींटी (http://ant.apache.org/) का उपयोग कर पसंद करते हैं, जहां आप कुछ इस तरह कर सकते हैं:

<property name="src.dir" value="src"/> 
<property name="conf.dir" value="conf" /> 

फिर बाद में जब आप कुंजी 'src.dir' का उपयोग करने के लिए, बस यह कुछ इस तरह फोन हैं:

<dirset dir="${src.dir}"/> 

अपाचे चींटी का उपयोग करने के बारे में एक और अच्छी बात यह है कि आप एंटर बिल्ड फ़ाइल में .properties फ़ाइल भी लोड कर सकते हैं। बस इसे इस तरह आयात करें:

<loadproperties srcFile="file.properties"/> 
0

.xmlEven बेहतर: नवीनतम मेवेन का उपयोग करें। आप मेवेन के साथ कुछ साफ सामान कर सकते हैं। Maven के पोम में

key1 = ${src1.dir} 
key2 = ${src1.dir}/${filename} 
key3 = ${project.basedir} 

: इस मामले में आप एक .properties उस में यह लाइनों के साथ फाइल कर सकते हैं।xml फ़ाइल (अपनी परियोजना की जड़ में रखा) आप कुछ इस तरह करना चाहिए:

<resources> 
    <resource> 
     <filtering>true</filtering> 
     <directory>just-path-to-the-properties-file-without-it</directory> 
     <includes> 
      <include>file-name-to-be-filtered</include> 
     </includes> 
    </resource> 
</resources> 

... 

<properties> 
    <src1.dir>/home/root</src1.dir> 
    <filename>some-file-name</filename> 
</properties> 

इस तरह आप है कुंजी मूल्यों का निर्माण समय में बदल जाएगा, जिसका मतलब है कि आप इस मान अपने गुण के अंदर होगा संकलन के बाद फ़ाइल:

key1 = /home/root 
key2 = /home/root/some-file-name 
key3 = the-path-to-your-project 

इस लाइन के साथ संकलन जब आप pom.xml फ़ाइल के रूप में ही निर्देशिका में हैं: mvn स्वच्छ -DskipTests स्थापित

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