Как отладить цель maven с помощью intellij idea?


101

Можете ли вы отладить цель maven с помощью Intellij IDEA? Я знаю, что могу щелкнуть правой кнопкой мыши и запустить отладку . Однако плагин maven не отображается в моем списке внешних библиотек , поэтому я не могу войти в код и установить точку останова. Таким образом, Debug выполняет задачи без остановки, как и Run .

Я использую OS X 10.8 и IDEA 12.0.2.

РЕДАКТИРОВАТЬ: цель

Я написал специальный specRunner для https://github.com/searls/jasmine-maven-plugin - однако $ specs $ остается пустым. Поэтому я пытаюсь посмотреть, какие файлы действительно загружены.


2
отладить цель maven ? что это за цель maven ? чего ты хочешь добиться? а в чем ваша актуальная проблема?
— Алонсо Домингес

Под целью maven я подразумеваю jasmine: test или jasmine: bdd. Насколько я видел, каждый Mojo должен реализовывать метод execute (), который я хотел бы отлаживать. Однако, поскольку у меня нет доступа к банке из IDEA, я не могу установить точку останова.
— rweng

Ответы:


192

Догадаться:

  1. из командной строки запустите maven goal с помощью mvnDebugвместо mvn. НапримерmvnDebug clean
  2. Откройте исходный код плагина maven, который вы хотите отлаживать в intelliJ, и установите точку останова
  3. В IDEA добавьте RemoteConfiguration.
    1. В разделе «Настройки» установите «Транспорт»: сокет, «Режим отладчика»: «Подключить», «Хост: локальный хост», «Порт: 8000» (порт по умолчанию для mvnDebug).
  4. Запустите конфигурацию в режиме отладки. Он должен подключиться к ожидающему mvnDebug jvm.

2
Как открыть исходный код плагина maven в Intellij?
— CorayThan

Я думаю, что клонировал его с github в правильной версии. Остальное произошло автоматически.
— rweng

3
Что, если я хочу запускать тесты с использованием mvn test -Dtest=com.example.MyTest(мой тестовый пример не выполняется только при запуске с использованием maven) - точки останова IDEA в этом случае игнорируются, кажется ... :(
— RobertG

2
Нашел: в stackoverflow.com/q/6573289/1143126 это в основном вопрос, заданный
— RobertG

В частности, вот как отлаживать цель maven с уверенностью: stackoverflow.com/a/8339155/929708
— JJ Brown

40

Очень просто. Я использую Intellj Idea 15.0.4

  1. Установите точку останова в своем плагине maven
  2. В теге «Maven Projects» перейдите к проекту, который использует ваш плагин maven.
  3. В «Плагины» найдите свой плагин и над целью щелкните правой кнопкой мыши и выполните отладку.

Вот скриншот:

Скриншот


1
Хотя этот ответ имеет отрицательную оценку, он помог мне решить возникшую у меня проблему (как отлаживать проект на основе maven в IntelliJ), и когда я «погуглил» вопрос, это привело меня на эту страницу.
— gbmhunter

Спасибо, сэр, ваш ответ помог мне понять, как автоматически использовать плагины maven во время запуска идеи
— Анатолий Якимчук

На самом деле это очень хороший ответ. Для меня определенно проще и проще сделать это, чем настроить удаленную отладку (как предлагается в принятом ответе). Не уверен, почему был принят другой. Возможно, это не сработает для ситуации, описанной в вопросе, но если определенно сработает для меня, спасибо!
— Чанандлер Бонг

2
"Установите точку останова в вашем плагине maven" Я не уверен, что это на самом деле означает? Это отличается от установки точки останова в самом классе java?
— Amalgovinus

«Установить точку останова в вашем плагине maven» означает установить
— точку

17

Старый вопрос, но у меня была такая же потребность, и мне потребовалось время, чтобы заставить его работать. Надеюсь, может кому-то помочь.

Для тестовой отладки используйте:

mvn <goal> -Dmaven.surefire.debug 

или

mvn <goal> -Dmaven.failsafe.debug

Когда выполнение останавливается и прослушивает сокет по адресу 5005 (по умолчанию), вы запускаете настроенный удаленный отладчик.

Как это настроить:

Выполнить -> Изменить конфигурации -> Удаленный транспорт: режим отладчика сокетов: Присоединить порт: 5005 (по умолчанию)

-> Сохранить.


10

Я думаю, что самое простое решение - временно добавить плагин maven в качестве зависимости. Как только это будет сделано, IntelliJ будет обрабатывать это так же, как и любую другую зависимость, и вы можете установить точки останова обычным способом.


2
расставьте точки, и вместо mvn используйте: mvnDebug ..., затем создайте средство удаленной отладки в intellij на порту 8000
— user85155

В 1000 раз больше! Я пытался отлаживать сторонний плагин, и добавление его в качестве обычной зависимости Maven означало, что я мог легко загрузить исходный код, найти класс, в котором, как я знал, возникла проблема (на основе журнала изменений Github), и установить точку останова. Щелчок правой кнопкой мыши по желаемой цели Maven и выбор «Отладка», как уже упоминалось другими, работал отлично
— Патрик Эррера,

10

Самый простой способ отладки цели maven ТОЛЬКО в IntelliJ - создать обычную цель maven и передать эти параметры виртуальной машины на вкладке runner:

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

Где 8000 - номер порта для удаленной отладки.

Конфигурация цели Maven

Затем создайте новую удаленную конфигурацию с портом 8000. Запустите эту конфигурацию после запуска maven goal.

Конфигурация удаленной отладки


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>

И запустите maven goal с помощью mvnвместо mvnDebug. Напримерmvn spring-boot:run

В IDEA добавьте удаленную конфигурацию. В разделе «Настройки» установите «Транспорт»: сокет, «Режим отладчика»: «Подключить», «Хост: локальный хост», «Порт: 8000» (порт по умолчанию для mvnDebug).

Запускайте отладку в IDEA всякий раз, когда вы хотите отладить код.


3
В вопросе не упоминалась весна, этот ответ специфичен для весны
— Амальговин

1

Поскольку вы работаете с Intellij, там уже есть встроенный отладчик, и вам не обязательно использовать mvnDebug, который является инструментом командной строки. Ознакомьтесь с этим руководством: Как отлаживать приложения Maven в Intellij IDEA .

В учебнике используется подключаемый модуль Maven Exec, который позволяет отлаживать приложение без использования командной строки или MvnDebug. Обмен мыслями здесь может быть ценным.


2
В руководстве рассматривается только отладка exec:java. Однако, если вам нужно предоставить дополнительные аргументы для JVM, вам необходимо использовать exec:exec(см. Stackoverflow.com/questions/7305090/… ), который нельзя отладить таким образом.
— mirelon

0

Ответ @Peter Szanto работает для меня, но мне не нравится путать свой исходный код.

И я не могу заставить этот MvnDebugспособ работать.

Поэтому я пробую другой способ: добавляю исходный код плагина как модуль IDEA .

Вот подробный шаг:

  1. Клонируйте исходный код плагина как независимый проект.

  2. В своем проекте перейдите File -> New -> Module from Exist Sourcesи добавьте проект плагина, который вы клонировали на шаге 1.

  3. Теперь вы можете открыть исходный код плагина и установить точку останова.

  4. Запустите свою цель maven как режим отладки, она должна остановиться в точке останова.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.