2014-06-20 12 views
30

मैं अपने इकाई परीक्षण में जावा 8 सिंटैक्स का उपयोग करना चाहते हैं, लेकिन मेरे 'मुख्य' कोड के बाद से जावा 7 के लिए संकलित किए जाने की आवश्यकता के लिए संकलित करने के बाद, जावा 8 के लिए मेरे Maven इकाई परीक्षण चलाने के लिए कैसे मेरे उत्पादन वातावरण में केवल जेडीके 7 स्थापित है।संकलन और जबकि मेरी कोड जावा 7

वहाँ Maven-संकलक प्लगइन के साथ ऐसा करने का कोई तरीका है? मेरा जेनकींस सर्वर जावा 8 स्थापित है।

मैं जोखिम को स्वीकार करेंगे कि मैं यह कर सकते हैं आकस्मिक उपयोग जावा 8 मेरी उत्पादन कोड में विशिष्ट कार्यक्षमता।

+3

+1 ध्यान दें कि यह थोड़ा जोखिम भरा है बस स्रोत सेट करने के लिए भाषा संस्करण आप गलती से जावा 8 एपीआई का उपयोग कर सकते हैं और संकलक शिकायत नहीं करेगा। तो सुरक्षा के लिए, आप भी Java7 वर्ग पुस्तकालयों के साथ संकलन करने की जरूरत चाहते हैं (जो शायद जटिल Maven प्रोफाइल की ओर जाता है ...) – Thilo

उत्तर

36

Maven में संकलन और testCompile लक्ष्यों अलग हैं। और मेवेन में testCompile के लिए पैरामीटर भी हैं: testTarget और testSource। तो:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <testSource>1.8</testSource> 
     <testTarget>1.8</testTarget> 
    </configuration> 
</plugin> 
+0

आसान :) धन्यवाद – rjdkolb

+9

कैसे इस विधि का उपयोग और रखने के लिए का एक अच्छा उदाहरण नहीं है यही कारण है कि अपने सुरक्षित कोड (= जावा 8 एपीआई का उपयोग नहीं कर गलती से) https://gist.github.com/aslakknutsen/9648594 – blalasaadri

+0

@blalasaadri के तहत, हाँ, अच्छा इसके अलावा। – mkrakhin

2

एक mkrakhin के जवाब के थोड़ा और अधिक संक्षिप्त संस्करण आप सेट कर सकते source, target, testSource और testTarget:

<properties> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 

    <maven.compiler.testSource>1.8</maven.compiler.testSource> 
    <maven.compiler.testTarget>1.8</maven.compiler.testTarget> 
    </properties> 
</project> 
संबंधित मुद्दे