2016-04-29 10 views
9

से जेएआर के दो संस्करण हैं। मेरे पास एक रूट प्रोजेक्ट है जो युद्ध बनाता है, और दो बाल परियोजनाएं जो JARs बनाती हैं। जड़ परियोजना का संदर्भ बच्चे परियोजना इस तरह से:ग्रेड: उत्पादित WAR फ़ाइल में बाल परियोजना

apply plugin: 'war' 

jar.enabled = false 
war { 
    dependencies { 
     runtime project(':application1') 
     runtime project(':application2') 
    } 
} 

application2 application1 पर निर्भर करता है: रिपोजिटरी से एक है, एक और बस का निर्माण:

dependencies { 
    compile '...:application1:1.+' 
} 

युद्ध फ़ाइल application1.jar के दो संस्करण भी शामिल है।

संपादित करें: एप्लिकेशन 2 को जेएआर के रूप में एप्लिकेशन 1 पर निर्भर होना है क्योंकि यह एम्बेडेड जेटटी के साथ एक्लिप्स में डिबगिंग को सरल बनाता है: ग्रहण स्वचालित रूप से Jetty सर्वर लॉन्च कॉन्फ़िगरेशन के क्लासपाथ में application1.jar जोड़ता है।

+0

एप्लिकेशन 2 इस तरह आवेदन 1 पर निर्भर क्यों करता है? यह नहीं होना चाहिए। –

+0

निर्भरता कैसे निर्दिष्ट की जानी चाहिए? – isobretatel

+3

'संकलन परियोजना (': application1 ') '। –

उत्तर

0

आपने रूट प्रोजेक्ट के लिए के लिए अलग-अलग application1 प्रोजेक्ट पर निर्भरता निर्दिष्ट की है।

आपके application2 के लिए इसे कुछ रिपॉजिटरी के भीतर लाइब्रेरी पर निर्भरता के रूप में बनाया गया था, लेकिन आपकी मूल परियोजना उपप्रोजेक्ट पर निर्भर करती है। ग्रैडल निर्धारित नहीं कर सकता है कि रिपो में कुछ लाइब्रेरी समान प्रोजेक्ट के रूप में समान है।

आप एक ही lib के 2 संस्करण प्राप्त नहीं करना चाहते हैं, तो आप यह एक ही पुस्तकालय से निर्भर बनाना है: या तो के रूप में

compile '...:application1:1.+' 

या

रूप
runtime project(':application1') 

वैसे भी, ऐसा लगता है कि यह दोनों मामलों में एक ही उपप्रोजेक्ट के आधार पर, फिर कुछ परियोजनाओं और पुस्तकालय में रिपो में निर्भर करता है।

+0

यह मेरे उपयोग के मामले में मदद नहीं करता है। प्रश्न में मेरा संपादन देखें। – isobretatel

+0

@isobretatel तो एकमात्र तरीका निर्भरता में से एक घोषित करने के लिए है, क्या आपने इसे आजमाया है? – Stanislav

+0

>> प्रदान की गई निर्भरताओं में से एक घोषित करें << - कैसे? – isobretatel

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