2012-11-16 15 views
9

हमारे पास मेवेन प्रोजेक्ट (जेएआर के रूप में पैक किया गया) जावा फ़ाइलों के साथ है। एक नया जावा स्रोत फ़ाइल को हाल ही में इस प्रोजेक्ट में जोड़ा गया था। जिस पथ में जावा फ़ाइल जोड़ा गया था, वह अपने पैकेज घोषणा से मेल नहीं खाता है। जैसा कि अपेक्षित है, ग्रहण विसंगति के लिए कक्षा में एक त्रुटि दिखाता है। हालांकि, मेवेन परियोजना को ठीक बनाता है। जेनरेट की गई जेएआर फ़ाइल में, .class फ़ाइल पैकेज घोषणा द्वारा इंगित पथ में मौजूद है। हमने जावा स्रोत फ़ाइल को अन्य गलत फ़ोल्डरों (यानी पैकेज घोषणा से अलग) में ले जाने का प्रयास किया, लेकिन हर बार मेवेन परियोजना को ठीक बनाता है।मेवेन + जावा पैकेज घोषणा

तो, क्या मैवेन वास्तविक निर्देशिका को अनदेखा करता है जिसमें .java फ़ाइल मौजूद है? क्या यह केवल पैकेज घोषणा पर विचार करता है?

+0

कृपया अपने पोम जैसे कुछ विवरण जोड़ (कम से कम इसकी पैकेजिंग जैसे युद्ध, जार इत्यादि), फ़ोल्डर संरचना, पथ जहां आपने नई फाइल आदि को जोड़ा है। –

+0

मैंने उल्लेख किया है कि पैकेजिंग मेरे प्रश्न में जार है। अन्य विवरणों के लिए, क्षमा करें, लेकिन मुझे नहीं लगता कि यह प्रश्न के लिए कैसे मदद करेगा। मैं केवल नमूना मूल्य प्रदान कर सकता हूं, क्योंकि मैं कुछ स्वामित्व कोड पर काम कर रहा हूं। – Vasan

+0

असल में मैं सिर्फ यह जानना चाहता था कि आपकी फ़ाइल वास्तव में मेवेन के रूप में स्थित है, यह बहुत ही विशिष्ट संरचना है। लेकिन वैसे भी, जैसा कि आप कह रहे हैं कि आप मेवेन का निर्माण ठीक काम करता है, ठीक है। कुछ चीजें जो आप कर सकते हैं, जांचें कि क्या आपने अपने ग्रहण में ठीक से कॉन्फ़िगर किया गया मैवेन प्लगइन है या नहीं। ग्रहण में बस परियोजना को जोड़ने के बजाय, ग्रहण में "मेवेन प्रोजेक्ट" के रूप में अपनी परियोजना को "आयात करें", फिर यह मेवेन बिल्ड के साथ समन्वयित होना चाहिए। –

उत्तर

8

मेवेन कंपाइलर प्लगइन आंतरिक रूप से एक कमांड लाइन कॉल को इकट्ठा करता है जिसमें javac को दिए गए तर्क, प्रति स्रोत फ़ाइल में एक तर्क (the sourcefiles version of the javac call का उपयोग करके) शामिल है। यह एनोटेशन प्रोसेसिंग जैसे मेटा-क्षमताओं के लिए वास्तविक स्रोत फ़ोल्डर भी पास करता है, लेकिन जब व्यक्तिगत स्रोत फ़ाइलों को जावैक में पास किया जाता है, तो इन्हें प्राथमिकता मिलती है और संकलक के पास यह पता लगाने का कोई प्रभावी तरीका नहीं है कि कौन सी फ़ाइल स्रोत स्रोत से संबंधित है और इसलिए ' पैकेज संरचना को मान्य नहीं है।

Maven संकलक प्लगइन आंतरिक Plexus Compiler API का उपयोग करता है, और आप इन दो वर्गों में प्रासंगिक कोड पा सकते हैं:

+0

समझ में आता है, संक्षिप्त उत्तर और पॉइंटर्स के लिए धन्यवाद! – Vasan