В чем преимущество соглашения "src/main/java"?
Я заметил, что многие проекты имеют следующую структуру:
- Project-A
- бен
- Lib
- ЦСИ
- Основной
- Java
- RootLevelPackageClass.java
В настоящее время я использую следующее соглашение (поскольку мои проекты составляют 100% java):
- Project-A
- бен
- Lib
- ЦСИ
- RootLevelPackageClass.java
В настоящее время я не использую Maven, но мне интересно, если это соглашение Maven или нет, или есть другая причина. Может кто-нибудь объяснить, почему первая версия настолько популярна в наши дни, и если я должен принять это новое соглашение или нет?
Крис
Ответы
Ответ 1
Основное преимущество заключается в том, что каталог test
является подкаталогом src
с той же структурой каталогов, что и в main
:
- Project-A
- бен
- Lib
- ЦСИ
- Основной
- Java
- RootLevelPackageClass.java
- Ресурсы
- тест
- Java
- TestRootLevelPackageClass.java
- Ресурсы
Все частные методы пакета RootLevelPackageClass
будут видны, т.е. проверяются с TestRootLevelPackageClass
. Поскольку тестовый код также является источником, его место должно находиться в директории src
.
Ответ 2
Да, это соглашение Maven.
Даже если ваш проект на 100% Java (как это типично для Maven btw), у вас часто есть файлы ресурсов (которые идут в src/main/resources
в соответствии с соглашением Maven) или в приложении для веб-приложений или... все эти легко вписывайтесь в систему Maven.
Если вы довольны своей текущей системой сборки (что бы это ни было), нет никаких оснований переключаться на Maven. В противном случае, или если вы начинаете новый проект, вы можете оценить свои параметры, в том числе Maven.
Ответ 3
Его соглашение в Maven.
Maven основан на Концепция конфигурации по конфигурации. Это означает: если вы не следуете этому соглашению, вы должны настроить, где находятся источники. Это главное преимущество ИМХО.
Ответ 4
Другие уже сказали вам это соглашение Maven, я отвечу на ваш вопрос:
Абсолютно ничего. Конечно, полезно разделить фрагменты кода на отдельные корневые папки, но обычно вы можете добиться того же результата с помощью
вместо этого. Фактически здесь большая вещь Maven делает это на самом деле очень сильно неправильно: он хочет добавить двоичный контент в репозиторий исходного кода, который предназначен только для текстового контента! Весь двоичный контент должен управляться вне репозитория исходного кода, который включает изображения в веб-приложениях и еще что-то.
Но хорошо, давайте предположим, что вы решили жить в несколько вонючей экосистеме Maven; то вам следует, конечно, следовать правилам Maven как можно более строго.
Ответ 5
Да, это соглашение maven, но даже если вы не используете maven, есть преимущества для его использования:
- У людей, новых для проекта, будет более легкое время, приближающееся к скорости, так как это "стандартный"
- это соглашение является гибким и имеет место для кода, отличного от Java, и других вещей, которых у вас нет на данный момент. Это одна из причин, по которой она популярна, и вы можете обнаружить, что она развивается лучше, чем схема, которую вы придумали сами.
- если вы хотите перейти на maven в какой-то момент, это будет легко
Хотя я бы не стал спорить о том, что вы должны переключиться, чтобы переключиться, при запуске нового проекта действительно нет причин не использовать его - если вы не согласитесь философски с тем, как он нарушает код.