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