इंटेलीज विचार के साथ एक मावेन गोल कैसे डिबग करें?


100

क्या आप Intellij IDEA के साथ मावेन गोल कर सकते हैं? मुझे पता है कि मैं डीबग को राइट-क्लिक और चला सकता हूं । हालाँकि, मेरी बाहरी लाइब्रेरी सूची में मावेन प्लगइन नहीं दिखाई देता है , इसलिए मैं कोड में नहीं जा सकता और एक ब्रेकपॉइंट सेट कर सकता हूं। इस प्रकार, डिबग बिना रुके गोल चलाता है, जैसे रन करता है।

मैं OS X 10.8 और IDEA 12.0.2 का उपयोग कर रहा हूं।

संपादित करें: लक्ष्य

मैंने https://github.com/searls/jasmine-maven-plugin के लिए कस्टम नमूना लिखा है - हालाँकि, $ चश्मा $ रु खाली है। इसलिए मैं यह देखने की कोशिश करता हूं कि कौन सी फाइलें वास्तव में भरी हुई हैं।


2
एक मावेन गोल डिबग करें ? वह मावेन गोल क्या है ? आपकी क्या प्राप्त करने की इच्छा है? और आपकी वास्तविक समस्या क्या है?
अलोंसो डोमिंगुएज़

मावेन गोल के साथ मेरा मतलब चमेली: टेस्ट, या चमेली: bdd है। जहां तक ​​मैंने देखा है, प्रत्येक मोजो को एक निष्पादन () विधि को लागू करना चाहिए जिसे मैं डिबग करना चाहता हूं। हालाँकि, चूंकि IDEA से जार तक मेरी कोई पहुंच नहीं है, इसलिए मैं एक ब्रेकपॉइंट सेट नहीं कर सकता।
रवांग

जवाबों:


190

पता लगा लिया:

  1. कमांड लाइन से, के mvnDebugबजाय के साथ मावेन गोल चलाएं mvn। उदाहरण के लिएmvnDebug clean
  2. इनवैलिजे में डिबग करना चाहते हैं और एक ब्रेकपॉइंट सेट करने के लिए मावेन प्लगइन का स्रोत खोलें
  3. IDEA में, एक Remoteकॉन्फ़िगरेशन जोड़ें ।
    1. सेटिंग के तहत, ट्रांसपोर्ट: सॉकेट, डीबगर मोड: अटैच, होस्ट: लोकलहोस्ट, पोर्ट: 8000 (mvnDebug का डिफ़ॉल्ट पोर्ट) सेट करें।
  4. कॉन्फ़िगरेशन को डिबग मोड में चलाएँ। इसे वेटिंग mvnDebug jvm से जोड़ना चाहिए।

2
आप इन्टेलिज में मावेन प्लगइन के स्रोत को कैसे खोलते हैं?
कोराथन

मुझे लगता है कि मैंने इसे सही संस्करण में जीथब से क्लोन किया। बाकी सब अपने आप हो गया।
रवांग

3
क्या होगा यदि मैं परीक्षण का उपयोग करके चलाना चाहता हूं mvn test -Dtest=com.example.MyTest(मेरा परीक्षण मामला केवल
मावेन

2
यह मिला: stackoverflow.com/q/6573289/1143126 में , यह मूल रूप से प्रश्न पूछा गया
रॉबर्ट जीएन

विशेष रूप से, यहाँ बताया गया है कि अचूक के साथ एक मावेन गोल कैसे करें: stackoverflow.com/a/8339155/929708
JJ Brown

40

बहुत आसान। मैं Intellj Idea 15.0.4 का उपयोग कर रहा हूं

  1. ब्रेकप्वाइंट को अपने मावेन प्लगइन में सेट करें
  2. "मावेन प्रोजेक्ट्स" टैग में प्रोजेक्ट चुड़ैल पर जाएं आपके मावेन प्लगइन का उपयोग कर रहा है।
  3. "प्लगइन्स" में अपना प्लगइन खोजें और लक्ष्य पर राइट क्लिक करें और डीबग करें

यहाँ एक स्क्रीनशॉट है:

स्क्रीनशॉट


1
हालाँकि इस उत्तर का एक नकारात्मक स्कोर है, लेकिन इससे मुझे उस मुद्दे को ठीक करने में मदद मिली जो मेरे पास था (इंटेलीज में एक मावेन-आधारित परियोजना को कैसे डीबग करना है), और जब "Googling" मुद्दे ने मुझे इस पृष्ठ पर पहुंचाया।
gbmhunter

धन्यवाद सर, आपके उत्तर ने मुझे यह पता लगाने में मदद की कि आइडिया चलाने के दौरान
मावेन

यह वास्तव में एक बहुत अच्छा जवाब है। मेरे लिए यह निश्चित रूप से आसान है और इसे इस तरह से करना आसान है ताकि एक दूरस्थ डिबग सेट किया जा सके (जैसा कि स्वीकृत उत्तर में सुझाव दिया गया है)। निश्चित नहीं कि दूसरे को क्यों स्वीकार किया गया। शायद यह सवाल में वर्णित स्थिति के लिए काम नहीं करेगा, लेकिन अगर निश्चित रूप से मेरे लिए काम किया, तो धन्यवाद!
Chanandler बोंग

2
"ब्रेकप्वाइंट को अपने मावेन प्लगइन में सेट करें" मुझे यकीन नहीं है कि वास्तव में इसका क्या मतलब है? क्या यह जावा क्लास में ही ब्रेकपॉइंट लगाने से अलग है?
अमलगोविनस

"ब्रेकप्वाइंट को अपने मावेन प्लग इन में सेट करें" का अर्थ है कि ब्रेकपॉइंट को अपने
मावेन

17

पुराना सवाल है, लेकिन मुझे उसी की ज़रूरत थी और इसे काम करने में मुझे थोड़ा समय लगा। उम्मीद है कि किसी की मदद कर सकते हैं।

परीक्षण डिबगिंग उपयोग के लिए:

mvn <goal> -Dmaven.surefire.debug 

या

mvn <goal> -Dmaven.failsafe.debug

जब निष्पादन बंद हो जाता है और पता 5005 (डिफ़ॉल्ट) पर सॉकेट के लिए सुनता है तो आप अपने कॉन्फ़िगर किए गए दूरस्थ डीबगर को चलाते हैं।

इसे कैसे कॉन्फ़िगर करें:

रन -> कॉन्फ़िगरेशन संपादित करें -> रिमोट ट्रांसपोर्ट: सॉकेट डीबगर मोड: अटैच पोर्ट: 5005 (डिफ़ॉल्ट)

-> बचाओ।


10

केवल इंटेलीज के भीतर मावेन लक्ष्य को डिबग करने का सबसे आसान तरीका एक नियमित मावेन गोल बनाना है और रनर टैब में उन वीएम विकल्पों को पास करना है:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

जहां 8000 दूरस्थ डिबगिंग के लिए एक पोर्ट नंबर है।

मावन लक्ष्य विन्यास

फिर पोर्ट 8000 के साथ नया रिमोट कॉन्फ़िगरेशन बनाएँ। मावेन गोल चलाने के बाद इस कॉन्फ़िगरेशन को चलाएँ।

दूरस्थ डिबगिंग कॉन्फ़िगरेशन


8

मुझे लगता है कि सबसे आसान समाधान अस्थायी रूप से मावेन प्लगइन को एक निर्भरता के रूप में जोड़ना है। एक बार यह हो जाने के बाद, IntelliJ किसी अन्य निर्भरता की तरह ही इसका इलाज करेगा और आप सामान्य तरीके से ब्रेकपॉइंट सेट कर सकते हैं।


1
इसे डॉट करें, और mvan उपयोग के बजाय: mvnDebug ..., फिर रिमोट 8000 में intellij में एक रिमोट डिबग रनर बनाएं
user85155

3

या तो आप उपरोक्त उत्तर को संदर्भित कर सकते हैं या बस इस प्लगइन को pom.xml में जोड़ सकते हैं

           <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
            <jvmArguments>
            -Xdebug - 
            Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
            </jvmArguments>
            </configuration>
        </plugin>

और के mvnबजाय के साथ मावेन गोल चलाते हैं mvnDebug। उदाहरण के लिएmvn spring-boot:run

IDEA में, दूरस्थ कॉन्फ़िगरेशन जोड़ें। सेटिंग के तहत, ट्रांसपोर्ट: सॉकेट, डीबगर मोड: अटैच, होस्ट: लोकलहोस्ट, पोर्ट: 8000 (mvnDebug का डिफ़ॉल्ट पोर्ट) सेट करें।

IDEA में डिबग के रूप में चलाएं, जब भी आप कोड को डीबग करना चाहते हैं।


3
प्रश्न में स्प्रिंग का उल्लेख नहीं किया गया था, यह उत्तर स्प्रिंग-विशिष्ट है
अमलगोविनास

1

चूंकि आप इंटेलीज के साथ काम कर रहे हैं, वहां पहले से ही एक अंतर्निहित डीबगर है और आपको जरूरी नहीं कि mvnDebug का उपयोग करने की आवश्यकता है जो एक कमांड लाइन उपकरण है। इस ट्यूटोरियल को देखें: Intellij IDEA में Maven Applications कैसे डीबग करें

ट्यूटोरियल Maven Exec प्लगइन का उपयोग करता है और आपको कमांड लाइन का उपयोग करने की आवश्यकता के बिना एप्लिकेशन को डीबग करने देता है MvnDebug। सोचा कि इसे साझा करना यहाँ मूल्य हो सकता है।


2
ट्यूटोरियल केवल डिबगिंग को कवर करता है exec:java। हालाँकि, यदि आपको JVM के लिए अतिरिक्त तर्क देने की आवश्यकता है, तो आपको उपयोग करने की आवश्यकता है exec:exec(देखें stackoverflow.com/questions/7305090/… ), जिसे उस तरह से डीबग नहीं किया जा सकता है।
मिरलॉन

0

@Peter Szanto मेरे लिए जवाब का काम है, लेकिन मुझे अपने स्रोत कोड को गड़बड़ करना पसंद नहीं है।

और मैं उन MvnDebugतरह से काम नहीं कर सकता ।

इसलिए मैं एक और तरीका आज़माता हूं, आईडीईए मॉड्यूल के रूप में प्लगइन स्रोत जोड़ें

यहाँ विस्तार कदम है:

  1. एक स्वतंत्र परियोजना के रूप में प्लगइन स्रोत को क्लोन करें।

  2. अपने प्रोजेक्ट में, File -> New -> Module from Exist Sourcesचरण 1 में आप जिस प्लगइन प्रोजेक्ट को क्लोन करते हैं, उस पर जाएं और जोड़ें।

  3. अब आप प्लगइन स्रोत कोड खोल सकते हैं और कुछ ब्रेक पॉइंट सेट कर सकते हैं।

  4. अपने मावेन लक्ष्य को डिबग मोड के रूप में चलाएं, इसे ब्रेक प्वाइंट पर रोकना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.