2009-11-19 14 views
6

मेरे पास काफी बड़ी ivy.xml है जिसमें कई कॉन्फ़िगरेशन हैं जो कई परियोजनाओं के लिए समान हैं।ivy.xml में फ़ाइल को कैसे शामिल करें?

मैं इस बड़े दोहराव वाले खंड को एक सामान्य फ़ाइल में विभाजित करना चाहता हूं। किसी भी तरह से मुझे यह बताते हुए कोई दस्तावेज नहीं मिल रहा है कि यह किया जा सकता है।

कोई भी जिसके पास यह विचार है कि यह करने योग्य है या नहीं?

संपादित करें: कुछ और सोचने के बाद, मुझे लगता है कि यह उद्देश्य पर करने योग्य नहीं है। एक आइवी फ़ाइल एक समेकित इकाई के रूप में होती है और इसमें कोई फ़ाइल आधारित संदर्भ नहीं होना चाहिए, केवल अन्य आईवी मॉड्यूल के संदर्भ ...

उत्तर

9

आप एक आइवी लता मेटा मॉड्यूल बना सकते हैं जो निर्भर करता है

<?xml version="1.0"?> 
    <ivy-module version="2.0"> 
     <info organisation="com.example" module="common-libs"/> 
      <configurations> 
      <conf name="runtime" transitive="true" visibility="public" /> 
      <conf name="master" transitive="true" visibility="public" /> 
      <conf name="compile" transitive="true" visibility="public" /> 
      <conf name="default" transitive="true" visibility="public" extends="master" /> 
      </configurations> 
      <dependencies> 
       <dependency org="oracle" name="ojdbc14_g" rev="10.2.0.3" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
       <dependency org="tomcat" name="servlet-api" rev="6.0.16" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
       <dependency org="junit" name="junit" rev="4.3" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
      </dependencies> 
    </ivy-module> 

और एक विशिष्ट परियोजना के लिए:

<?xml version="1.0"?> 
    <ivy-module version="2.0"> 
    <info organisation="com.example" module="myproject"/> 
     <configurations> 
     <conf name="runtime" transitive="true" visibility="public" /> 
     <conf name="master" transitive="true" visibility="public" extends="runtime"/> 
     <conf name="compile" transitive="true" visibility="public" /> 
     <conf name="default" transitive="true" visibility="public" extends="master" /> 
     </configurations> 
     <dependencies> 
     <dependency org="com.example" name="common-libs" rev="latest.release" 
      conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
     </dependencies> 
    </ivy-module> 
उन आम संकुल के सभी, और फिर पर अपने सभी अन्य परियोजनाओं सकर्मक निर्भरता के माध्यम से आम पुस्तकालयों को हल है

यहां मैं मैवेन रिज़ॉल्वर के POM-> आइवी अनुवादों से पारंपरिक कॉन्फ़िगरेशन नामकरण सम्मेलनों का उपयोग कर रहा हूं, हालांकि आप कॉन्फ़िगरेशन नामों को किसी भी तरह से मैप कर सकते हैं जो आपको समझ में आया है। मैं आईवी का उपयोग करता हूं: मेवेन मॉड्यूल को हमारे आईवी भंडार में कॉपी करने के लिए कार्य स्थापित करें, इसलिए मैं अधिकांश भाग के लिए डिफ़ॉल्ट ivy.xmls का उपयोग करता हूं। यदि आप IvyRoundup का उपयोग कर रहे हैं, तो आप मुख्य रूप से "डिफ़ॉल्ट" कॉन्फ़िगरेशन को पारगमन करना चाहते हैं।

2

यदि आप चींटी से आईवी का उपयोग कर रहे हैं और आप एंटी 1.6 या बाद में चल रहे हैं, तो आप इसका उपयोग कर सकते हैं <import> आपके एंटी बिल्ड फ़ाइल के भीतर फ़ाइल फ़ाइल बनाने के लिए कार्य शामिल करने के लिए कार्य करें। संदर्भित फ़ाइलों पूरा चींटी निर्माण फ़ाइलों होने के लिए, हालांकि है:

<?xml version="1.0"?> 
<project name="my-project" default="usage" basedir="."> 
    <target name="setup"> 
    ... 
    </target> 

    <import file="./common.xml"/> 
    ... 
</project> 

आप भी अपनी ivy.xml या build.xml फ़ाइल के भीतर से मानक XML सिंटैक्स का उपयोग कर सकते हैं:

<?xml version="1.0"?> 
<!DOCTYPE project [ 
     <!ENTITY common SYSTEM "common.xml"> 
]> 
<project name="my-project" default="usage" basedir="."> 
    <target name="setup"> 
    ... 
    </target> 

    &common; 
    ...  
</project> 

यह common.xml की सामग्री शामिल सचमुच होगा जहां आपने &common; इकाई रखी है।

(इस उदाहरण में फ़ाइल नाम common.xml XML पार्सर युक्त एक्सएमएल फ़ाइल के सापेक्ष हल हो गई है। तुम भी एक निरपेक्ष file: प्रोटोकॉल URI का उपयोग कर सकते हैं।)