Spring Initializr .gitignore намерение (или понимание намерения)

#git #spring-boot #gitignore #spring-initializr

#git #spring-boot #gitignore #spring-инициализация

Вопрос:

Я создаю новое приложение Spring Boot. Я более чем умеренно знаком с .gitignore шаблонами, но я вижу что-то намеренно шаблонное, в котором есть запах «намерения». Приведенное ниже создается Spring Initializr во многих IDE.

 target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
 ...
 ...
build/
!**/src/main/**/build/
!**/src/test/**/build/
  

Я полагаю, что это как-то связано с многомодульной функцией проекта maven, но приложения Initializr не являются многомодульными (при запуске). Это помимо того, что я здесь читаю?Если я попытался понять, что, по моему мнению, утверждается, это то, что я не хочу делать (как правило, практика).

«Игнорируйте target/ папки, где бы они ни встречались, но target папки ниже верхнего уровня some/path /src/main/ deeper/still /target/ включают их.

«О, сделайте то же самое для build/ каталогов NetBeans!»

Это не совсем имеет смысл. Зачем мне когда-либо фиксировать целевой контент, созданный сборкой? Таким образом, я пытаюсь вывести намерение инженеров Spring.

Обновить

На самом деле, это именно то, что это делает, включает target или build каталоги глубже в корне. С какой целью?

 mkdir -p some/path/src/main/deeper/still/target/
touch !$/test.txt
  

Этот новый target каталог включен для промежуточной обработки и фиксации. Удалите это, и оно будет проигнорировано.

Комментарии:

1. Мое использование deeper/still маскировало намерение, поскольку я также зациклился на использовании target в отрицаемом операторе исключения. Я, вероятно, обнаружил бы намерение, если бы использовал более подходящий путь, то есть шаблон имени пакета, подобный src/main/com/target/api . Я отмечаю это в своем исследовании ниже.

Ответ №1:

По сути, эти «включенные» (отрицаемые исключения) гарантируют, что каталоги ниже src/main и src/test которые могут быть названы target , например, именем пакета, не пропущены при фиксации.

В обсуждении Spring Initializr gitter Энди Уилкинсон, коммиттер Spring, отметил:

Это делается для предотвращения игнорирования для Maven build output directory ( target ) из-за того, что код в пакете с именем target игнорируется.

Во многих случаях безопасно удаляется в отдельных случаях использования, «если вы не работаете на Target» (Target Brands, Inc. может иметь имена пакетов как com.target.api.* ) (привет Энди для примера).

На мой вопрос должен был быть дан ответ с использованием src/main и src/test , но я позволил неправильному использованию слова, target , сбить меня с толку. На самом деле, я демонстрировал это на своем собственном примере, но не смог пройти мимо слова. О!