Статьи

JRebel для приложения Gradle Spring Boot

Существует некоторая документация о том, как добавить JRebel в приложение Spring Boot , которое использует Gradle в качестве инструмента для сборки. Это простой, но работает отлично.

Все, что вам нужно сделать, это добавить несколько строк в build.gradle:

1
2
3
if (project.hasProperty('rebelAgent')) {
 bootRun.jvmArgs += rebelAgent
}

Затем установите свойство в gradle.properties:

1
rebelAgent=-agentpath:[path/to/JRebel library]

Однако есть несколько способов улучшить это.

Сделать JRebel необязательным

Например, что если вы не всегда хотите JRebel каждый раз, когда запускаете приложение с помощью « bootRun» ? Плагины JRebel для IDE, такие как Intellij IDEA , достаточно умны, чтобы дать вам возможность запускать ваше приложение с JRebel или без него.

Было бы несколько способов сделать это, но один из них — добавить загрузочную конфигурацию JRebel в необязательную задачу.

1
2
3
4
5
6
7
8
9
task addRebelAgent << {
  if (project.hasProperty('rebelAgent')) {
    bootRun.jvmArgs += rebelAgent
  }
  else
    println 'rebelAgent property not found'
}
 
task rebelRun(dependsOn: ['addRebelAgent', 'bootRun'])

Теперь запуск «bootRun» запускает приложение в обычном режиме, и если вы хотите JRebel, используйте вместо этого задачу «rebelRun». Я также добавил отладочное сообщение, если свойство rebelAgent недоступно.

Другой способ — передать необязательное свойство в задачу «bootRun» для использования в качестве флага, добавлять ли JRebel или нет.

1
2
3
4
if (project.hasProperty('rebelAgent') &&
    project.hasProperty('addJRebel')) {
 bootRun.jvmArgs += rebelAgent
}

Затем, чтобы использовать JRebel, вам просто нужно добавить дополнительное свойство.

gradle bootRun -PaddJRebel = true

Нахождение базы повстанцев

Указание пути к библиотеке JRebel для использования в качестве агента в файле свойств позволяет нескольким разработчикам иметь собственную версию. Однако путь все еще жестко запрограммирован, чего следует избегать, если это возможно.

Другой способ указать путь — использовать системную переменную среды, чтобы указать, где установлен JRebel. JetBrains рекомендует использовать REBEL_BASE . После настройки это позволяет использовать переменную среды несколькими способами, например, файлами сборки Gradle, командной строкой, сценариями сборки и т. Д.

Вот пример использования дополнительной задачи «addRebelAgent», которую я указал ранее, которую я использую на своем компьютере с Windows 64.

01
02
03
04
05
06
07
08
09
10
11
12
task addRebelAgent << {
  project.ext {
    rebelAgent = "-agentpath:${System.env.REBEL_BASE}${rebelLibPath}"
  }
  if (project.hasProperty('rebelAgent')) {
    bootRun.jvmArgs += rebelAgent
  }
  else
    println 'rebelAgent property not found'
}
 
task rebelRun(dependsOn: ['addRebelAgent', 'bootRun'])

И в gradle.properties я указал путь к библиотеке агентов из места установки JRebel.

1
rebelLibPath=\\lib\\jrebel64.dll

Все, что я сделал здесь, это построил путь в свойстве rebelAgent из переменной среды REBEL_BASE и другого свойства, определяющего внутренний путь к библиотеке.

1
rebelAgent = "-agentpath:${System.env.REBEL_BASE}${rebelLibPath}"
Опубликовано на Java Code Geeks с разрешения Дэвида Вонга, партнера нашей программы JCG . См. Оригинальную статью здесь: JRebel для загрузочного приложения Gradle Spring

Мнения, высказанные участниками Java Code Geeks, являются их собственными.