2011-10-21 7 views
5

मेरे पास एक बाहरी पुस्तकालय है जिसे मेरे जावा प्रोजेक्ट में परीक्षण के साथ गतिशील रूप से जोड़ा जाना चाहिए। परियोजना Maven का उपयोग करके सेटअप है, और मैं पारित करने के लिए परीक्षण के लिए ग्रहण में मेरी वी एम तर्क के लिए निम्न जोड़ने की जरूरत:क्या यह एक पीओएम फ़ाइल के अंदर से एक मेवेन टेस्ट में लगातार -Djava.library.path पास हो सकता है?

-Djava.library.path=${env_var:HOME}/.m2/repository/natives/dist/lib -ea

दुर्भाग्य से इसका मतलब यह है कि Maven से परीक्षण चल रहा है का उपयोग करते हुए: mvn test हमेशा असफल हो जायेगी ।

एक काम के चारों ओर एक -DargLine तर्क इतने तरह के साथ mvn कॉल करने के लिए है:

mvn test -DargLine="-Djava.library.path=/Users/rob/.m2/repository/natives/dist/lib -ea"

हालांकि, स्पष्ट रूप से यह मेरा मशीन के लिए विशिष्ट होने की समस्या है, तो मैं इसे सीधे में नहीं डाल सकते पोम फ़ाइल। मुझे लगता है कि मैं जो खोज रहा हूं वह प्रति मशीन आधार पर उस स्ट्रिंग को संशोधित करने का एक तरीका है जैसे कि पहली पंक्ति ग्रहण के लिए होती है।

मैं भी उत्सुक मैं इसे कैसे पोम फ़ाइल, मैं <argLine> टैग की अंदर रखकर की कोशिश की है में डाल सकता है, लेकिन वह काम करने लगता है नहीं करता है, वहाँ कुछ मैं याद कर रहा हूँ है:

<argLine>-Djava.library.path=/Users/rob/.m2/repository/natives/dist/lib -ea</argLine>

उत्तर

3

कुछ शोध के बाद मैंने अपनी समस्या का एक सभ्य समाधान खोज लिया है।

अपने settings.xml फ़ाइल maven में, आप localRepository यहाँ के लिए एक स्थान निर्धारित कर सकते हैं कि आप कुछ भी नहीं स्थापित कर दें तो चूक कर रहे हैं:

  • यूनिक्स/मैक ओएस एक्स - ~/.m2
  • विंडोज - सी: \ दस्तावेज़ और सेटिंग्स \ username.m2

आप इस कम से कम से मेल खाता निर्देशिका के पहले भाग देख सकते हैं मैं स्थापित करने के लिए कोशिश कर रहा था: /Users/rob/.m2

चूंकि डायनामिक लिंकिंग ओएस विशिष्ट है, इसलिए आप वैकल्पिक पथ प्रत्यय के लिए प्रोफ़ाइल सेट अप भी कर सकते हैं। आप एक .pom इस तरह से कर सकते हैं:

<profile> 
    <id>OSX</id> 
     <activation> 
      <os> 
       <family>mac</family> 
      </os> 
     </activation> 
    <properties> 
     <dynamic.libLoc>${settings.localRepository}/natives/dist/lib</dynamic.libLoc> 
    </properties> 
</profile> 

फिर आप परियोजना आप परीक्षण करना चाहते के लिए .pom में इस संपत्ति का उपयोग कर सकते हैं। प्लग-इन श्रेणी के तहत आप जोड़ सकते हैं:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <argLine>-Djava.library.path=${dynamic.libLoc}</argLine> 
    </configuration> 
</plugin> 

अब Maven गतिशील रूप से जुड़े हुए पुस्तकालयों के स्थान निर्दिष्ट किए बिना उन उपयोगकर्ताओं परीक्षण चला सकते हैं। आप एक और प्रोफ़ाइल जोड़कर विभिन्न ऑपरेटिंग सिस्टम के साथ उपयोगकर्ताओं को भी संभाल सकते हैं।

नोट: <argLine> के साथ मेरी समस्या के संबंध में पहले। मुझे लगता है कि मैं इसे गलत .pom

में उपयोग कर रहा था
संबंधित मुद्दे