2012-06-07 9 views
67

मेरे पास मेरे एंड्रॉइड प्रोजेक्ट में एक जार है और मैं इसे अंतिम एपीके में जोड़ना चाहता हूं। ठीक है, मैं जाकर:मैवेन और सिस्टम स्कोप में जेएआर जोड़ना

<dependency> 
     <groupId>com.loopj.android.http</groupId> 
     <artifactId>android-async-http</artifactId> 
     <version>1.3.2</version> 
     <type>jar</type> 
     <scope>system</scope> 
     <systemPath>${project.basedir}/libs/android-async-http-1.3.2.jar</systemPath> 
    </dependency> 

लेकिन जब मैं mvn package चला रहा हूँ मैं एक चेतावनी हो रही है:

[WARNING] Some problems were encountered while building the effective model for **apk:1.0 
[WARNING] 'dependencies.dependency.systemPath' for com.loopj.android.http:android-async-http:jar should not point at files within the project directory, ${project.basedir}/libs/android-async-http-1.3.2.jar will be unresolvable by dependent projects @ line 36, column 25 

और अंतिम APK में कोई जार देखते हैं।

मैं इसे कैसे ठीक करूं?

+3

आप इस तरह से सिस्टम स्कोप का उपयोग नहीं कर सकते हैं। इंस्टॉल का उपयोग करें: इंस्टॉल-फ़ाइल। – bmargulies

+0

@bmargulies क्या आप कह सकते हैं कि यह दायरा क्या है? – efpies

+0

मैंने धीरे-धीरे स्विच करने के लिए स्विच किया है और अब इन सिरदर्दों को नहीं छोड़कर अब मैं मैवेन के साथ एक ओपन सोर्स लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूं और अस्थायी रूप से एक जार हैक कर रहा हूं (जो कि धीरे-धीरे इतना आसान है और मेवेन में इतना कठिन है)। –

उत्तर

20

आपको अपने स्थानीय मेवेन भंडार में add the jar की आवश्यकता होगी। वैकल्पिक रूप से (बेहतर विकल्प) उचित भंडार निर्दिष्ट (यदि कोई है) तो यह स्वचालित रूप से द्वारा Maven

डाउनलोड किया जा सकता या तो मामले में, निर्भरता

+3

मैंने यह आलेख देखा है लेकिन मुझे आशा है कि हर कंप्यूटर पर 'मेवेन इंस्टॉल' न करें जहां मैं उस परियोजना को बनाना चाहता हूं (दुर्भाग्य से मुझे रिपो में यह जार नहीं मिला)। धन्यवाद! :) – efpies

+0

इसे निर्माण के हिस्से के रूप में लिखित किया जा सकता है। –

3

भंडार प्रबंधक उपयोग से <systemPath> टैग निकाल दें और इस तरह स्थापित इसमें जार यह आपकी समस्याओं को और आपके नेटवर्क के सभी कंप्यूटरों के लिए हल करता है।

+2

हमने कल या बाद में स्थानीय सर्वर पर रेपो चलाने की योजना बनाई लेकिन इससे पहले मुझे इस समस्या को किसी अन्य तरीके से हल करना चाहिए। – efpies

+0

जैसा कि @efpies ने उल्लेख किया है, यह एक पाई-इन-द-स्काई जवाब हो सकता है जब डेवलपर को रेपो मैनेजर बनाने की अनुमति/क्षमता नहीं होती है। – javadba

9

सिस्टम स्कोप केवल 'सिस्टम' फ़ाइलों से निपटने के लिए डिज़ाइन किया गया था; कुछ निश्चित स्थान पर बैठे फाइलें। /usr/lib में फ़ाइलें, या ${java.home} (उदा। tools.jar)। यह आपकी परियोजना में विविध .jar फ़ाइलों का समर्थन करने के लिए डिज़ाइन नहीं किया गया था।

लेखकों ने जानबूझकर पथनाम विस्तार को आपके लिए हतोत्साहित करने के लिए सही तरीके से काम करने से इंकार कर दिया। नतीजतन, अल्प अवधि में आप स्थानीय रेपो में स्थापित करने के लिए install:install-file का उपयोग कर सकते हैं, और फिर कुछ दिन साझा करने के लिए एक रेपो प्रबंधक का उपयोग कर सकते हैं।

98

मैं असली कारण पता नहीं है लेकिन Maven कुछ Maven खजाने में (भी कस्टम) सभी पुस्तकालयों स्थापित करने के लिए डेवलपर्स को धक्का, तो scope:system अच्छी तरह से पसंद नहीं है, एक साधारण तरीके का उपयोग करने के लिए maven-install-plugin

का पालन करें उपयोग:

<dependency> 
    <groupId>com.mylib</groupId> 
    <artifactId>mylib-core</artifactId> 
    <version>0.0.1</version> 
</dependency> 

तो इस तरह से अपनी निर्भरता लिखते हैं, Maven: स्थापित-प्लग-इन जोड़ते

+०१२३५१६४१० phase:clean को
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <version>2.5.2</version> 
    <executions> 
     <execution> 
      <id>install-external</id> 
      <phase>clean</phase> 
      <configuration> 
       <file>${basedir}/lib/mylib-core-0.0.1.jar</file> 
       <repositoryLayout>default</repositoryLayout> 
       <groupId>com.mylib</groupId> 
       <artifactId>mylib-core</artifactId> 
       <version>0.0.1</version> 
       <packaging>jar</packaging> 
       <generatePom>true</generatePom> 
      </configuration> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

वेतन ध्यान, अपने भंडार में अपना कस्टम पुस्तकालय स्थापित करने के लिए, आप mvn clean चलाने के लिए और फिर mvn install

+4

उत्कृष्ट उत्तर, बस जो मैं खोज रहा था। –

+0

बहुत बहुत धन्यवाद, यह वह समाधान है जिसे मैं चाहता था – Frank

+5

' प्रक्रिया-संसाधन' साफ़ 'के बजाय क्यों नहीं उपयोग करें। प्रक्रिया-संसाधन चरण ऐसे परिदृश्य के लिए अधिक उपयुक्त दिखता है और इसे हमेशा संकलन चरण से पहले बुलाया जाता है। – jplandrain

3

इस विन्यास का प्रयास करें। यह मेरे लिए काम किया:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <warSourceDirectory>mywebRoot</warSourceDirectory> 
     <warSourceExcludes>source\**,build\**,dist\**,WEB-INF\lib\*, 
      WEB-INF\classes\**,build.* 
     </warSourceExcludes> 
     <webXml>myproject/source/deploiement/web.xml</webXml> 
     <webResources> 
      <resource> 
       <directory>mywebRoot/WEB-INF/lib</directory> 
       <targetPath>WEB-INF/lib</targetPath> 
       <includes> 
         <include>mySystemJar1.jar.jar</include> 
         <include>mySystemJar2.jar</include> 
        </includes> 
      </resource> 
     </webResources> 
    </configuration> 
</plugin> 
0

mvn स्थापित: स्थापित फ़ाइल -DgroupId = com.paic.maven -DartifactId = tplconfig-Maven-प्लगइन -Dversion = 1.0 -Dpackaging = जार -Dfile = tplconfig-Maven-प्लगइन -1.0.jar -DgeneratePom = true

स्थानीय भंडार में जार स्थापित करें।

+2

यह सीधे पोम के माध्यम से जोड़ने से बोझिल है। –

1
<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
     <includeSystemScope>true</includeSystemScope> 
    </configuration> 
</plugin> 

इसे आजमाएं।

+0

कोई स्पष्टीकरण? धन्यवाद! – Allan

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