2013-07-15 7 views
5

शुद्ध चींटी से एंटी + ivy में माइग्रेट करने के बाद मेरी परियोजना निर्माण समय 7 से 26 तक बढ़ गया है, जबकि वृद्धिशील पुनर्निर्माण अब 1s (लगभग तत्काल) के बजाय 7s हैं।आईवी संकल्प के प्रदर्शन में सुधार

इस समय का अधिकांश समय ivy:resolve में खर्च किया गया है, जिसे मुझे ivy:cachepath का उपयोग करके कक्षापथ उत्पन्न करने की आवश्यकता है।

क्या इसे गति देने का कोई तरीका है, खासकर पुनर्निर्माण?

+0

बढ़ाने से कैश टीटीएल बहुत मदद करता है की कोशिश करो - पुनर्निर्माण बार 2s करने के लिए नीचे कर रहे हैं। मुझे लगता है कि अतिरिक्त दूसरा सिर्फ आईवी अक्षमता है। यद्यपि पूर्ण निर्माण (आबादी वाले कैश के साथ) कुछ कारणों से 20s हैं। कृपया एक उत्तर दें जिसे मैं चिह्नित कर सकता हूं। –

उत्तर

1

एक और विकल्प नेटवर्क आधारित रिज़ॉल्यूशन को बंद करना और कैश किए गए डेटा का उपयोग करने के लिए आईवी को मजबूर करना है।

अधिक जानकारी के लिए निम्नलिखित जवाब देखें:

1

क्या आप <ivy:cleancache> का उपयोग कर रहे हैं? यही कारण है कि आपके पुनर्निर्माण बहुत कम हैं, लेकिन आपके शुरुआती निर्माण इतने लंबे हैं।

आईवी बिना आइवी के उपयोग से धीमी गति से चलने वाला है। आइवी को आपके द्वारा निर्दिष्ट प्रत्येक जार को डाउनलोड करना होगा, साथ ही आइवी कैश में सभी निर्भरताओं को डाउनलोड करना होगा (जो विंडोज़ पर यूनिक्स/मैक/लिनक्स और %USERPROFILE%\.ivy2\cache पर डिफ़ॉल्ट रूप से $HOME/.ivy2/cache है) इससे पहले कि यह शुरू हो सके। आप 4 या 5 जार निर्दिष्ट कर सकते हैं, लेकिन ये उन पर निर्भर हो सकते हैं जो अधिक पर निर्भर हो सकते हैं।

वास्तव में जार की आइवी डाउनलोडिंग को गति देने का कोई तरीका नहीं है, लेकिन एक बार जार डाउनलोड हो जाने पर, वास्तव में आइवी कैश को हर बार एक नया करने के लिए हमेशा एक कारण नहीं है परियोजना, या जब आप एक साफ करते हैं।

आप क्या कर सकते सेटअप अपने स्वच्छ है, तो आप जब तक आप इसे निर्दिष्ट आइवी कैश सफाई से बचने कर सकते हैं:

<taskdef uri="http://ant.apache.org/ivy" 
    resource="org/apache/ivy/ant/antlib.xml"> 
    <classpath> 
     <fileset dir="${ivy.dir}"> 
      <include name="ivy*.jar"/> 
     </fileset> 
    </classpath> 
</taskdef> 

<property name="ivy.cleancache" value="false"/> 
<target name="clean"> 
    <if> 
     <istrue value="${ivy.cleancache}"/> 
     <then> 
      <ivy:cleancache/> 
     </then> 
    <if> 
    <delete dir="${target.dir}"/> 
</target> 

इस तरह, ant clean चल अपने आइवी कैश हर बार साफ़ नहीं होगा, और आप इसे बार-बार उपयोग कर सकते हैं। यदि आप ऐसा करने की जरूरत है आप आइवी कैश साफ करने के लिए करना चाहते हैं:

ant -Divy.cleancache=true clean 

हाँ, यह antcontrib उपयोग कर रहा है। मैं अपने विशेष आईवी निर्देशिका कॉन्फ़िगरेशन का उपयोग सभी के लिए आइवी कॉन्फ़िगर करने के लिए करता हूं और जब मैं इसमें हूं, एंटी-कॉन्ट्रिब के लिए परिभाषाओं, प्लस फाइंडबग, पीएमडी और अन्य उपयोगी टूल शामिल करने के लिए।

हालांकि, यह चींटी 1.9 में ऐसा करने के लिए संभव नहीं हो सकता है:

<property name="ivy.cleancache" value="false"/> 
<target name="clean"> 
    <ivy:cleancache if:true="ivy.cleancache/> 
    <delete dir="${target.dir}"/> 
</target> 

मैं इस प्रयास नहीं किया है, लेकिन अगर यह काम करता है, आप antcontrib उपयोग करने के लिए नहीं है। बेशक, आप ऐसा भी कर सकता है:

<target name="ivy.cleancache" 
    if="ivy.cleancache"> 
    <ivy:cleancache/> 
</target> 

<target name="clean" 
    depends="ivy.cleancache"> 
    <delete dir="${target.dir}" 
</target> 

तो फिर तुम निर्दिष्ट कर सकते हैं:

$ ant -Divy.cleancache clean 

डाल ant clean आइवी कैश सफाई के बिना अपने निर्माण साफ करने के लिए अपने आइवी कैश को साफ करने और बस के लिए।


1. यदि आप नेक्सस या Artifactory की तरह अपने खुद के Maven भंडार का उपयोग जार को डाउनलोड करने की गति बढ़ा सकते हो सकता है। इनके पास अपना स्वयं का कैश होगा जो स्थानीय रूप से डाउनलोड किए गए थर्ड पार्टी जार स्टोर करेगा। इन तृतीय पक्ष जार को खोजने के लिए यह आपके नेटवर्क के बाहर जाने से थोड़ा तेज़ है, लेकिन उन्हें अभी भी डाउनलोड करना होगा। शायद 26 सेकंड लेने के बजाय, इसमें केवल 20 सेकंड लग सकते हैं।

+0

मैं आम तौर पर दो साफ-सुथरे लक्ष्य "साफ" और "साफ-सुथरा" बनाता हूं, उत्तरार्द्ध पूर्व पर निर्भर करता है और आईवी क्लींचैच कार्य चलाता है। सरल, मुझे लगता है, और तीसरी पार्टी "चींटी-contrib" पुस्तकालय की आवश्यकता नहीं है। अन्यथा मैं इस जवाब का समर्थन करता हूं। कैशिंग (आईवी और नेक्सस) प्रदर्शन में सुधार करता है। –

+0

@ MarkO'Connor जैसा कि मैंने कहा था, मेरे पास एक विशेष [आइवी निर्देशिका] (https://github.com/qazwart/ivy.dir) प्रोजेक्ट है जिसमें डेवलपर्स शामिल हैं और यह आईवी के लिए आवश्यक सब कुछ कॉन्फ़िगर करता है। एक बोनस टीए, मैं एंटी-कॉन्ट्रिब समेत उपयोगी तृतीय पक्ष प्लगइन्स का एक पूरी तरह से जोड़ता हूं। भाग और पार्सल के रूप में, एक 'javac.macro' जो सभी चेतावनियों को प्रदर्शित करता है, और' jar.macro' जो स्वचालित रूप से एक pom.xml में जोड़ता है जैसे मैवेन इसे पसंद करता है। हालांकि, पिछले दो तरीकों से मैं आपको दिखाता हूं कि बिना किसी चींटी के इसे कैसे किया जाए। –

+0

मैं सही खड़ा हूँ। मुझे आपको गिटूब प्रोजेक्ट को अधिक विस्तार से देखना होगा, थक्स! –

0

इस -Divy.checkmodified=false/-Divy.skip=true

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