2013-04-22 29 views
5

का उपयोग कर सभी स्रोत जार की प्रतिलिपि कैसे करें हमारे पास पुराना प्लेफ्रेमवर्क 1.2.x संस्करण है जहां हम सभी जार को प्रोजेक्ट/lib में कॉपी करते हैं ताकि playframework उनका उपभोग कर सके। हम सभी स्रोत जारों की प्रतिलिपि बनाने के लिए भी प्यार करेंगे ताकि जब runnig खेल ग्रहण करें, हम सभी तृतीय पक्ष स्रोत देख सकते हैं। क्या धीरे-धीरे इसे करने का कोई तरीका है?ग्रेडल

और मेरा मतलब है कि सभी स्रोत जार जो डाउनलोड किए गए थे जब मैं धीरे-धीरे ग्रहण चला गया क्योंकि मैंने उन्हें कैश स्थानों को डाउनलोड किया था। हमारे पास एक परियोजना पर हमारे लिए ग्रहण करने वाला ग्रहण खेलना भी है, इसलिए हम 100% केवल ग्रेडल का उपयोग कर सकते हैं।

धन्यवाद, डीन

उत्तर

5

यह है कि सीधे आगे अपेक्षा के अनुरूप नहीं है। एक विशिष्ट फ़ोल्डर में निम्नलिखित स्निपेट प्रतियां स्रोत जार सभी निर्भरता के लिए (क्रम + संकलन) एक जावा परियोजना के:

task copySourceJars(type:Copy){ 
     def deps = configurations.runtime.incoming.dependencies.collect{ dependency -> 
      dependency.artifact { artifact -> 
        artifact.name = dependency.name 
        artifact.type = 'source' 
        artifact.extension = 'jar' 
        artifact.classifier = 'sources' 
       } 
      dependency 
     } 
     from(configurations.detachedConfiguration(deps as Dependency[]).resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL)) 
     into('sourceLibs') 
    } 

कारण है कि हम यहाँ एक lenientConfiguration उपयोग करते हैं, कि हम एक अगर असफल नहीं करना चाहते स्रोत आर्टिफैक्ट को हल नहीं किया जा सकता है। एक और अधिक सुरुचिपूर्ण तरीका हो सकता है, लेकिन मैं उसमें गहराई से नहीं देखा।

आशा है कि यह मदद करता है,

रेने

+0

ऐसा लगता है कि स्क्रिप्ट में कोई त्रुटि है, 'हल किया गया कॉन्फ़िगरेशन'' से (..) 'कथन में दो बार लिखा गया है। इसके अलावा, यह कोड केवल प्रत्यक्ष निर्भरताओं के लिए स्रोत डाउनलोड करता है, न कि ट्रांजिटिव्स के लिए, मेरा उत्तर देखें। – eskatos

+0

@eskatos मैंने डुप्लिकेट 'हल किए गए कॉन्फ़िगरेशन' को हटा दिया है। – sschuberth

4

रेने जवाब प्रत्यक्ष निर्भरता, सभी transitives निर्भरता नहीं स्रोतों जार के स्रोतों जार डाउनलोड करेगा।

task copySourceJars(type: Copy) { 
    def sources = configurations.runtime.resolvedConfiguration.resolvedArtifacts.collect { artifact -> 
    project.dependencies.create([ 
     group: artifact.moduleVersion.id.group, 
     name: artifact.moduleVersion.id.name, 
     version: artifact.moduleVersion.id.version, 
     classifier: 'sources' 
    ]) 
    } 
    from configurations.detachedConfiguration(sources as Dependency[]) 
    .resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL) 
    into file('some-directory/') 
} 

एक तो classifierjavadoc को बदलकर javadocs जार के लिए बहुत ही कर सकते हैं:

यहाँ एक काम है कि चाल करना होगा है।

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