Spring разработчики часто пишут документацию и README/HELP файлы к своим приложениям. Часто это делается в Markdown файлах. Markdown плагин в IntelliJ IDEA распознает файлы, предоставляет специальный редактор с подсветкой, автокомплитом и форматированием, а также дает визуальное отображение в панели предварительного просмотра в реальном времени. Кроме стандартной функциональности в IntelliJ IDEA есть пару уникальных фич, которые команда Spring АйО хотела бы выделить особенно.
Отображение Mermaid и PlantUML диаграмм
Что насчет отображения Mermaid и PlantUML диаграмм? Для поддержки их отображения потребуется установить соответствующие плагины. Достаточно объявить блок кода в markdown файле с указанием plantuml
или mermaid
языка, и во вкладке с визуальным отображением вы увидите полноценную диаграмму.
![Отображение PlantUML и Mermaid диаграмм в markdown файле Отображение PlantUML и Mermaid диаграмм в markdown файле](https://habrastorage.org/getpro/habr/upload_files/3a5/2c8/575/3a52c85759af7238a08049122c14f761.png)
Кстати, отображение Mermaid диаграмм поддерживает еще и GitHub markdown preview. К сожалению, поддержки для PlantUML в GitHub нет.
Выполнение команд терминала
При клонировании проекта обычно имеется файл README.md с инструкциями и командами для запуска приложения, настройки среды и т. д. IntelliJ IDEA обнаруживает эти команды и предоставляет значки для их запуска. Следующие блоки кода будут выполняемыми в IDEA:
![Выполняемыми команды из markdown файла Выполняемыми команды из markdown файла](https://habrastorage.org/getpro/habr/upload_files/42a/c22/d70/42ac22d70fece29156431017afa469aa.png)
Поскольку IDEA Ultimate с поддержкой http client становится все дальше и дальше от российских разработчиков (раз, два и три), отдельно стоит рассмотреть выполнение cURL команд через markdown файл. Также, как и в http файлах вы можете описать GET, POST, DELETE и другие HTTP запросы и выполнять их из markdown файла для проверки работоспособности ваших эндпоинтов.
![Выполнение cURL команд из markdown файла Выполнение cURL команд из markdown файла](https://habrastorage.org/getpro/habr/upload_files/063/598/26a/06359826a03f59e978cb0683b2a1f20d.png)
Не только bash скрипты
Но если функциональности bash не достаточно (или у вас аллергия на bash), то можно воспользоваться полноценным языком таким как kotlin, java, groovy, и т.д. Достаточно из markdown вызвать заранее заготовленные скрипты на kotlin/groovy scripts или JBANG (если кто-то помнит что это такое).
Давайте опять попробуем импортозаместить IntelliJ http client через один файл kotlin script.
Создаем
.kts
файл. Тут есть интересная особенность. Чтобы заработал запуск файла и поддерживались все автодополнения, добавления зависимостей и т.д., файл должен оканчиваться на.main.kts
.Добавим в наш скрипт библиотеку RestAssured, через специальную конструкцию:
@file:DependsOn("io.rest-assured:rest-assured:5.4.0")
Напишем простенький тест с проверкой и выводом результата:
import io.restassured.RestAssured.* import org.hamcrest.Matchers.* baseURI = "http://localhost:8089/rest" get("/owners?city=Madison&sort=firstName") .then().log().body(true) .statusCode(200) .body("content[0].firstName", equalTo("David")) .body("content[1].firstName", equalTo("Maria")) .body("content[2].firstName", equalTo("Peter"))
Мы уже можем запустить этот скрипт вызвав команду
Run .main.kts
из контекстного меню этого файла.Добавим вызов этого скрипта через утилиту kotlinc в markdown файл:
kotlinc -script ./test/rest.main.kts
Преимущества такого подхода перед http client очевидны, у нас есть все возможности языка и настоящий фреймворк для тестирования.
Запуск kotlin script из markdown файла
Про другие возможности редактирования и просмотра markdown файлов вы можете прочитать в документации.
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/134/1c4/7d6/1341c47d60d24c5bf6e1e7431f04377f.png)
Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм - Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.
Ждем всех, присоединяйтесь!