Как отладить цель 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 $ остается пустым. Поэтому я пытаюсь посмотреть, какие файлы действительно загружены.

Rweng
источник
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.
Rweng
источник
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. Обмен мыслями здесь может быть ценным.

Ambodi
источник
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 как режим отладки, она должна остановиться в точке останова.

user1686407
источник