gradle: изменить порт по умолчанию с 5005 - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу отладить некоторые экземпляры JVM, которые работают одновременно.Я знаю, что могу запустить gradle, используя --debug-jvm, чтобы JVM подождала, пока я запустил отладчик IDE, чтобы он подключался к JVM, но по умолчанию использует порт 5005.Это хорошо для отладки одного экземпляра JVM ... но если я хочу отладить более одного экземпляра, мне нужно определить другой порт из 5005. Как я могу добиться этого с помощью gradle?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

В моем случае я хотел отладить определенный файл, поэтому я включил следующий код в build.gradle:

task execFile(type: JavaExec) {
    main = mainClass

    classpath = sourceSets.main.runtimeClasspath

    if (System.getProperty('debug', 'false') == 'true') {
        jvmArgs "-Xdebug", "-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=y"
    }

    systemProperties System.getProperties()
}

, и я могу работать с:

gradle execFile -PmainClass=com.MyClass -Dmyprop=somevalue -Ddebug=true

Пользовательская задача execFile получает:

  • -PmainClass=com.MyClass: класс с основным методом, который я хочу выполнить (в сценарии main = mainClass)
  • -Dmyprop=somevalue: aсвойство, значение которого можно получить в приложении, вызывающем System.getProperty("myprop") (в сценарии для этого потребовалось systemProperties System.getProperties())
  • -Ddebug=true: флаг, разрешающий отладку на порту 8787 (см. сценарийif условие, а также address=8787, но порт может быть изменен, и это имя флага также может быть изменено).При использовании suspend=y выполнение приостанавливается до тех пор, пока отладчик не будет подключен к порту (если вам не нужно это поведение, вы можете использовать suspend=n)

. В вашем случае вы можете попробоватьчтобы применить логику за линией jvmArgs ... к конкретной задаче (или использовать tasks.withType(JavaExec) { ... }, чтобы применить ко всем задачам этого типа).

При использовании этого решения не используйте параметр --debug-jvm, посколькуВы можете получить ошибку о том, что свойство jdwp определяется дважды.

0 голосов
/ 16 ноября 2018

Вы можете изменить переменную окружения GRADLE_OPTS и добавить стандартный синтаксис отладчика Java, например, использовать порт 8888:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...