2011-11-26 17 views
5

संकलन मैं कुछ जावा के लिए नया है, और बहुत Maven के लिए नया हूँ। मैं कुछ शब्दावली का अपूर्ण रूप से उपयोग कर सकता हूं।बाहरी जार फ़ाइल से कक्षा के साथ एक Maven परियोजना (है कि एक Maven विरूपण साक्ष्य में नहीं है)

जैसा कि मैंने अपनी परियोजना विकसित की है, मैं निर्माण के लिए उपयोग करने वाले मेवेन का उपयोग कर रहा हूं, क्योंकि मुझे कक्षाओं की आवश्यकता है जो मूल जावा भाषा का हिस्सा नहीं हैं। मैंने <dependency> सेक्शन को pom.xml में कॉपी किया है (आमतौर पर कॉपी किया गया है mvnbrowser.com मुझे वास्तव में बहुत अच्छी तरह से समझने के बिना), और मैं अपनी इच्छित कक्षाओं का उपयोग करने में सक्षम हूं। बहुत अच्छा काम करता है।

अब मैं एक जावा वर्ग है कि मैं का उपयोग करने कि जाहिरा तौर पर एक Maven विरूपण साक्ष्य उपलब्ध नहीं है चाहते हैं का सामना करना पड़ा है। यह com.android.sdklib.build.ApkBuilder है जो एंड्रॉइड एसडीके के साथ वितरित किया जाता है। मैंने अपना कोड काम करने के लिए एक स्टैंडअलोन जावा प्रोग्राम लिखा; मैं इसे javac के साथ संकलित करता हूं और मैवेन के साथ नहीं, और यह ठीक काम करता है। इसके लिए, मैंने जार फ़ाइल डाली है जिसमेंहै, मेरी jre/lib/ext निर्देशिका (/usr/local/jdk1.6.0/jre/lib/ext एक फ्रीबीएसडी मशीन पर) में, और मेरी import com.android.sdklib.build.ApkBuilder लाइन ठीक से संकलित करती है और मैं ApkBuilder का उपयोग कर सकता हूं और इसे बिना किसी समस्या के उपयोग कर सकता हूं।

अब, जब मैं अपने Maven परियोजना में मेरे कार्य पूरा कोड कॉपी, और mvn project साथ निर्माण करने की कोशिश, मैं आयात लाइन पर package com.android.sdklib.build does not exist त्रुटियों, और cannot find symbol: class ApkBuilder त्रुटियों जहाँ मैं ApkBuilder का उल्लेख मिलता है।

शुद्ध चारों ओर देखते हुए, मैंने android-maven-plugin मिली: http://code.google.com/p/maven-android-plugin/। यह मुझे maven-android-sdk-deployer पर संदर्भित करता है: https://github.com/mosabua/maven-android-sdk-deployer। इन लीडों को पहले वादा किया गया था, लेकिन जहां तक ​​मैं कह सकता हूं, उनका उद्देश्य मैवेन का उपयोग करके एंड्रॉइड अनुप्रयोगों के विकास के लिए है, जो मैं करने की कोशिश नहीं कर रहा हूं। मैं सिर्फ एंड्रॉयड apk फाइलों में हेरफेर करने के लिए अपने जावा कार्यक्रम चाहते हैं, लेकिन मेरी जावा कार्यक्रम में ही एक Android डिवाइस पर चलाने के लिए नहीं है। इसके अलावा, एंड्रॉयड एसडीके FreeBSD जो मैं उपयोग कर रहा हूँ लिनक्स के साथ काम करने के लिए, नहीं किया जाता है, तो मैं maven-android-sdk-deployer के लिए स्थापना निर्देशों का पालन नहीं कर सकते हैं। मुझे maven-apkbuilder-plugin नामक एक आर्टिफैक्ट भी मिला, लेकिन यह एंड्रॉइड एप्लिकेशन बनाने के उद्देश्य से भी प्रतीत होता है और मुझे इसके लिए प्रलेखन नहीं मिला। इसलिए मैंने इन लीडों का पीछा नहीं किया है।

ऐसा लगता है सबसे आसान काम सिर्फ संकलक जब mvn package चल sdklib.jar फ़ाइल के लिए मेरे jre/lib/ext फ़ोल्डर में देखने के लिए प्राप्त करने के लिए किया जाएगा। लेकिन शायद यह जाने का रास्ता नहीं है। या हो सकता है कि संकलक sdklib.jar खोजने के लिए कारण होगा एक सरल परिवर्तन मैं अपने pom.xml के लिए कर सकते हैं। मैंने http://maven.apache.org/pom.html#Build_Settings पर पोम प्रलेखन को देखा, लेकिन ऐसा करने का कोई तरीका नहीं देखा। वैसे भी, मुझे यकीन है कि कम से कम एक समाधान है; मैं बस इसे नहीं जानता (अभी तक)।

मेरे विकल्प क्या हैं? मेरे मेवेन-निर्मित प्रोजेक्ट में ApkBuilder कक्षा का उपयोग करने का सबसे अच्छा तरीका क्या है? मुझे क्या पढ़ा जाना चाहिए जिससे मुझे इस प्रश्न का उत्तर देने में सक्षम बनाया गया? धन्यवाद!!

+0

आप सही ढंग से समस्या के स्रोत की पहचान की है जवाब देने के लिए कक्षापथ से गायब है। 'Jre/lib/ext' को फोर्स-फीड करना आदर्श नहीं है। कुछ मेवेन + एंड्रॉइड डेवलपमेंट टूल्स (मुझे एंड्रॉइड देव के बारे में कुछ भी पता नहीं है) पर शोध करने का प्रयास करें। एम 2 ई-एंड्रॉइड (http://rgladwell.github.com/m2e-android/) दिलचस्प लगता है। यह दावा करता है कि "यह एडीटी में मेवेन निर्भरता प्रबंधन की शक्ति लाता है" –

उत्तर

8

यदि आप जार का संदर्भ देने की कोशिश कर रहे हैं, तो सबसे आसान समाधान आपके स्थानीय भंडार में जार को मैन्युअल रूप से जोड़ना हो सकता है। विवरण के लिए here देखें।

संक्षेप:

mvn install:install-file  \ 
    -Dfile=<path-to-file>  \ 
    -DgroupId=<group-id>  \ 
    -DartifactId=<artifact-id> \ 
    -Dversion=<version>  \ 
    -Dpackaging=jar 

आप मई उपयोग जो कुछ भी आप group-id, artifact-id, और version के लिए चाहते हैं, लेकिन वे कुछ मिलता-जुलता ही वह रेपो में उपलब्ध था आपकी आशा से किया जाना चाहिए।

के बाद से आप वास्तव में एक Android परियोजना नहीं बना रहे, इस के लिए पर्याप्त हो सकता है।


यहाँ कैसे मैं प्रश्न पूछा गया होता है।

मैं एक पुस्तकालय मेरी Maven निर्माण में एक Maven भंडार से उपलब्ध नहीं उपयोग कर सकते हैं कैसे? जार -

(संयोग से, कि, और कहा कि के छोटे रूपों, लिंक आप पढ़ा है "चाहिए" ऊपर लाने चाहिए, अपने आखिरी सवाल :)

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