एक Maven निर्भरता के रूप में केवल परीक्षण क्रम (लेकिन परीक्षण संकलन) वर्ग पथ के लिए इस्तेमाल किया जा रहा घोषित करने के लिए सबसे अच्छा तरीका क्या है?परीक्षण क्रम के रूप में घोषित Maven निर्भरता केवल
विशेष रूप से, मैं slf4j-api
(एक प्रवेश मुखौटा) एक ठेठ, संकलन गुंजाइश निर्भरता के रूप में चाहते हैं, लेकिन मैं slf4j-simple
(barebones इकाई परीक्षण के लिए उपयुक्त कार्यान्वयन) चाहते हैं केवल परीक्षण क्रम वर्ग पथ पर (यह परीक्षण संकलन के लिए आवश्यक नहीं है)। मैं यह कर दिया गया है:
[WARNING] Unused declared dependencies found:
[WARNING] org.slf4j:slf4j-simple:jar:1.7.7:test
मैं एक runtime
का उपयोग नहीं कर सकते हैं:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
हालांकि, इस का नकारात्मक पहलू है कि dependency:analyze
रिपोर्ट slf4j-simple
अप्रयुक्त के रूप में, शायद क्योंकि यह संकलन के लिए आवश्यक नहीं है निर्भरता क्योंकि मैं नहीं चाहता कि निर्भरता पारिस्थितिकीकृत विरासत में हो (उदाहरण के लिए डाउनस्ट्रीम निर्भरता इसके बजाय log4j आदि का उपयोग कर सकती है)। मैंने runtime
optional=true
के साथ प्रयास किया, लेकिन इसके परिणामस्वरूप एक ही चेतावनी हुई।
(ध्यान दें मैं भी निर्भरता प्लगइन के लिए ignoreNonCompile
सेट कर सकते हैं कि, लेकिन यह है कि अन्य संभावित समस्याओं को छिपाने के हैं एक बहुत ही कुंद साधन की तरह लगता है।)
क्या यह मुख्य स्रोत के लिए रनटाइम पर की आवश्यकता है? क्या यह अभी भी 'रनटाइम' स्कॉप्ड निर्भरता के लिए शिकायत नहीं करेगा? –
सामान्य ट्रांजिटिव निर्भरताओं में घोषित नहीं किया जाना चाहिए। एक वैकल्पिक निर्भरता के लिए (आमतौर पर लॉगिंग की तरह जो विभिन्न ढांचे का उपयोग कर सकते हैं) आपकी प्रक्रिया सही है। शायद आप एक स्कोप टेस्ट भी जोड़ सकते हैं। –
यह 'रनटाइम' निर्भरता के लिए भी गलत (गलत, IMHO) शिकायत करता है, इसलिए ऐसा लगता है कि अकेले दायरे का जवाब यहां जवाब नहीं है। जो मैं वास्तव में चाहता हूं वह एक ऐसा दायरा है जो 'परीक्षण' और 'रनटाइम' (वर्ग पथ तक) का अंतर है और निर्भरता प्लगइन के लिए "अप्रयुक्त" 'रनटाइम 'निर्भरताओं के बारे में कम गूंगा कार्य करने के लिए है। –