2012-06-26 26 views
15

मेरे पास कुछ जावा/मेवेन प्रोजेक्ट हैं जिन्हें मैं Grails 2.0.4 प्रोजेक्ट में उपयोग करना चाहता हूं।Grails प्रोजेक्ट में जावा जेएआर फाइल कैसे जोड़ें?

  1. अपने स्थानीय Maven भंडार में जार फ़ाइलों स्थापित कर रहा है, और grails की lib फ़ोल्डर में जार फ़ाइलों की प्रतिलिपि grails install-dependency com.foo:my-project:0.0.1-SNAPSHOT
  2. क्रियान्वित: मैं इस तरह के रूप में विभिन्न दृष्टिकोण, की कोशिश की है।
  3. BuildConfig.groovy
  4. की निर्भरता अनुभाग uncommenting mavenLocal() करने के लिए compile com.foo:my-project:0.0.1-SNAPSHOT जोड़ना और गुजर /home/me/.m2/repository

मैं कुछ अन्य बातें की कोशिश की है, हो सकता है इस तरह के superstitiously एक grails clean जब भी सुविधाजनक में फेंकने के रूप में। प्रत्येक मामले में grails compile निम्नलिखित परिणाम उत्पन्न करता है: संकलन विफल रहता है, किसी भी वर्ग में किसी भी वर्ग में किसी भी वर्ग को संदर्भित करने में असमर्थ।

कोई विचार जो मुझे याद आ रहा है?

+1

यह वास्तव में अजीब है, क्योंकि उन विकल्पों में से किसी चाहिए काम ... आप जावा के एक नए संस्करण के साथ अपने जेएआर में कक्षाओं को संकलित करने के लिए नहीं किया था, आप ग्रेल्स चला रहे हैं? मैं एक पोस्टग्रेएसक्यूएल ड्राइवर जार के साथ एक ही समस्या में भाग गया और यही कारण था। – proflux

+3

क्या आप जार फ़ाइल को सत्यापित कर सकते हैं जिसमें 'jar tf lib.jar | grep mypackage.MyClass'? – ataylor

+2

मुझे अतीत में ऐसा कुछ पकड़ा गया है ... मैं उन वर्गों को 'आयात' करना भूल गया था जिनका मैं उपयोग कर रहा था। – cdeszaq

उत्तर

16

lib फ़ोल्डर में जार डालने से चाल चलनी चाहिए। हम वर्तमान में बिना किसी समस्या के एक ही दृष्टिकोण का उपयोग कर रहे हैं।

+4

उम ... साफ किया, फिर से कोशिश की, और यह काम करता है। –

+0

डिफ़ॉल्ट 'lib' फ़ोल्डर Grails 3.0 के रूप में चला गया है। http://grails.github.io/grails-doc/3.0.x/guide/single.html#upgrading -> "जेएआर फाइलों को हल करने के लिए निर्भरता संकल्प का उपयोग किया जाना चाहिए" –

6

"lib" फ़ोल्डर में जार जोड़ना मेरे लिए पर्याप्त नहीं था। मुझे दौड़ना पड़ा:

grails compile --refresh-dependencies 

यह काम करने के बाद।

0

Grails रीफ्रेश-निर्भरता, स्वच्छ आदि मेरे लिए काम नहीं किया। मेरे लिए क्या काम किया गया Grails डेमॉन से बाहर निकलना और Grails फिर से शुरू कर रहा था।

4

Grails डिफ़ॉल्ट रूप से <GRAILS-APP-DIR>/lib में स्थित स्थानीय .jar पुस्तकालयों नहीं लेते हैं (लगता है कि Grails 3.X/lib फ़ोल्डर डिफ़ॉल्ट कॉन्फ़िगरेशन निकाल दिया जाता है) के साथ यह लागू करने के लिए आसान तरीका संशोधित कर रहा है build.gradle इसके लिए एक स्थानीय निर्देशिका निर्भरता जोड़ने के लिए।

लगभग सभी मामलों के लिए निश्चित रूप से Maven रेपोस उपयोग करने के लिए बेहतर है, लेकिन यह कुछ db-vendor-drivers या अन्य पुस्तकालयों जो एक सार्वजनिक रेपो में नहीं हैं, संभव है।

dependencies { 
    ... 
    compile fileTree(dir: './lib', include: ['*.jar']) 
    ... 
} 

आप जब से तुम यह निर्दिष्ट कर रहे हैं यदि आप किसी अन्य निर्देशिका (नहीं /lib) का उपयोग कर सकते हैं: इस पुस्तकालयों <GRAILS-APP-DIR>/build.gradle को संशोधित करने और की तरह कुछ जोड़ने के लिए ऐसा करने के लिए। बेशक (db-vendor-drivers जो शायद पहले से ही अपने आवेदन कंटेनर वर्ग पथ में हैं के लिए उदाहरण के लिए गुंजाइश runtime बजाय compile हो जाएगा) सही गुंजाइश का उपयोग

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

+0

मुझे यकीन नहीं है कि आप इस तरह के सावधान क्यों देते हैं प्राचीन प्रश्नों के उत्तर। मुझे उम्मीद है कि यह किसी की मदद करेगा, लेकिन मैं इसका मूल्यांकन करने की कोशिश नहीं करूंगा। मैंने तीन वर्षों में कोई भी Grails नहीं किया है। –

+3

@EricWilson मैं पहली बार 'Grails' की कोशिश कर रहा हूं ..., मुझे लगता है कि इस प्रश्न में केवल काम करने का जवाब है, लेकिन यह कैसे काम करता है इसके बारे में स्पष्टीकरण नहीं है। इसलिए मैं बस यह तर्क देने का प्रयास करता हूं कि यह कैसे काम करता है। चिंता न करें मैं नहीं देख रहा हूं कि आप उत्तर की जांच करें: '), मैं इसे पोस्ट करता हूं अगर यह किसी की मदद करता है। – albciff