2010-11-15 11 views
41

मैं अपने मेवेन प्रोजेक्ट में कॉन्फ़िगरेशन फ़ाइल रखना चाहता हूं। the standard directory layout पर देखकर, दो स्थान हैं जो समझदार लगते हैं, "src/main/resources" और "src/main/config"। क्या कोई इनके बीच के अंतर को समझा सकता है, और समझा सकता है कि आप config में और resources में कब कुछ डाल देंगे?मेवेन में, मुख्य/संसाधन और मुख्य/कॉन्फ़िगरेशन के बीच क्या अंतर है?

इस मामले में, फ़ाइल मैं देख रहा हूँ ehcache.xml है, लेकिन मेरे सवाल का विशिष्ट ehcache नहीं है, मैं के लिए log4j.properties आदि

उत्सुक हूँ googling के एक बिट this person had the same question की खोज की है, लेकिन जवाब लग रहा था विरोधाभासी, और बहुत ही अधिकृत नहीं है।

+0

मुझे लगता है कि मैं मुख्य/config निर्देशिका के लिए एक उपयोग के मामले में पाया गया। मेरे पास कुछ कॉन्फ़िगरेशन फ़ाइलें हैं जो उपयोग करने के लिए वैकल्पिक हैं और क्लासपाथ में उपयोगी नहीं हैं। ऐप और कंटेनर के लिए उदाहरण कॉन्फ़िगरेशन फ़ाइलें इसे तैनात की जाती हैं। मैं उनके लिए कहीं भी कोई अन्य जगह नहीं ढूंढ सकता। – akostadinov

+0

यह प्लग-इन config फ़ाइलें (FindBugs, checkstyle, आदि) मैं संग्रह फ़ाइल में बंडल उन नहीं चाहूँगा कि ग्रहण के लिए एक अच्छी जगह हो सकती है। – jbruni

उत्तर

47

http://www.mail-archive.com/[email protected]/msg90985.html पर ईमेल विनिमय का कहना है:

"यह सब सिद्धांत है ... शायद जबकि डॉक्स लेखन, किसी Maven विकास के साथ शामिल यह सोचा एक src/main/config निर्देशिका के लिए उपयोगी हो सकता है और इसलिए इसे दस्तावेज़ों में शामिल किया गया था, लेकिन चूंकि इसे कोड में कभी लागू नहीं किया गया था, इसलिए इसका उपयोग आज नहीं किया जा रहा है। "

और

"निर्देशिका [src/मुख्य/config] तो आवेदन या परीक्षण कक्षाओं उस में कुछ भी नहीं पढ़ सकते हैं classpath पर दिखाई नहीं देता। "

तो बस src/main/resources का उपयोग

नोट:। अगर यह सच है (मैं प्रश्न प्रश्नकर्ता हूँ) मैं नहीं जानता, लेकिन वह इसका कारण बताने के लिए वेब पर इतने सारे लोगों log4j के लिए src/main/resources सिफारिश करेंगे .properties। अगर लोग सहमत हैं कि यह सही जवाब है तो आप मुझे अन्य लोगों को टाइपिंग को बचाने के लिए यहां डाल सकते हैं।

+1

यह सही है, क्लासपाथ पर प्राप्त होने वाली सभी गैर स्रोत फ़ाइलों के लिए बस 'src/xxx/resource' का उपयोग करें। निश्चित रूप से, आप अन्य निर्देशिकाओं को जोड़ने का निर्णय ले सकते हैं लेकिन आपको पीओएम में विशिष्ट कॉन्फ़िगरेशन जोड़ने की आवश्यकता होगी। स्पष्टीकरण के लिए –

+0

धन्यवाद। मैं प्रलेखन और [मानक निर्देशिका लेआउट अनुभाग] देख रहा था (http://maven.apache.org/guides/introduction/introduction-to-the- मानक- निर्देशिका-layout.html) इसका कोई उल्लेख नहीं करता है :( – seneyr

+2

मैं कॉन्फ़िगरेशन आइटम रखने के लिए src/main/config का उपयोग करता हूं जिसे मैं लक्ष्य में पैक नहीं करना चाहता, जैसे कि जेबॉस कॉन्फ़िगरेशन स्क्रिप्ट्स। – jbruni

7

scr/main/resources एक ऐसी जगह है जहां आपने अपनी छवियों, ध्वनियां, टेम्पलेट्स, भाषा बंडल, टेक्स्ट कोड और स्रोत कोड द्वारा उपयोग की जाने वाली बाइनरी फ़ाइलों को रखा है। Excache.xml, log4j.properties, logback.xml और अन्य सभी कॉन्फ़िगरेशन फ़ाइलें src/main/config पर जाती हैं।

अपने pom.xml में जोड़ें:

<build> 
    <resources> 
     <resource> 
      <targetPath>.</targetPath> 
      <directory>src/main/config</directory> 
     </resource> 
    </resources> 
</build> 
+0

यह मेरे लिए समझदार लगता है, लेकिन क्या आपके पास कोई संदर्भ है? विभिन्न ईमेल, जैसे http://markmail.org/message/lve4d2qzba2lritd संसाधनों कह log4j.properties –

+0

किसी भी नहीं मिल सकता है के लिए मानक नियुक्ति कर रहे हैं है। यह सिर्फ एक आम भावना है। जहां भी आप इसे डालते हैं, बस यह सुनिश्चित करें कि यह क्लासपाथ पर है, इसलिए इसे log4j लाइब्रेरी द्वारा उठाया जाएगा। –

+0

धन्यवाद। क्या इस निर्देशिका को मेवेन के तहत क्लासपाथ में जोड़ने का एक मानक तरीका है? (मैं एक नया Maven उपयोगकर्ता हूँ) –

0

यदि आप मुझसे पूछें तो केस का उपयोग बहुत सरल है। (ऐसा लगता है/main/config को बाद में मानक निर्देशिका लेआउट हटा दिया गया है)

  • /src/मुख्य/संसाधनों जार में चले जाते हैं और इस प्रकार classpath पर
  • /src/मुख्य/config विधानसभा प्लगइन के लिए है जहाँ आप एक ज़िप फ़ाइल का निर्माण हो सकता है:

    hello-world.zip 
    lib/ 
        <dependencies> 
    bin/ 
        run.bat 
        run.sh 
    config/ 
        config.properies 
    
2

src/main/config में src/main/config और src/main/resources के बीच होने वाली भ्रम के कारण src/main/config को शामिल किया गया है। यह बहुत स्टैक ओवरफ्लो प्रश्न वास्तव में JIRA ticket for the removal of src/main/config from Maven's standard में संदर्भित है।

लघु जवाब: उपयोग src/main/resources नहीं src/main/config। यह (नया) मेवेन तरीका है।

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