Подтвердить что ты не робот

В чем преимущество соглашения "src/main/java"?

Я заметил, что многие проекты имеют следующую структуру:

  • Project-A
    • бен
    • Lib
    • ЦСИ
      • Основной
        • Java
          • RootLevelPackageClass.java

В настоящее время я использую следующее соглашение (поскольку мои проекты составляют 100% java):

  • Project-A
    • бен
    • Lib
    • ЦСИ
      • RootLevelPackageClass.java

В настоящее время я не использую Maven, но мне интересно, если это соглашение Maven или нет, или есть другая причина. Может кто-нибудь объяснить, почему первая версия настолько популярна в наши дни, и если я должен принять это новое соглашение или нет?

Крис

4b9b3361

Ответ 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, я отвечу на ваш вопрос:

Абсолютно ничего. Конечно, полезно разделить фрагменты кода на отдельные корневые папки, но обычно вы можете добиться того же результата с помощью

  • [корень]
    • ЦСИ
      • com.org.net
        • Your.class
    • тест
      • com.org.net
        • YourTest.class
    • Lib
    • бен
    • Ресурсы

вместо этого. Фактически здесь большая вещь Maven делает это на самом деле очень сильно неправильно: он хочет добавить двоичный контент в репозиторий исходного кода, который предназначен только для текстового контента! Весь двоичный контент должен управляться вне репозитория исходного кода, который включает изображения в веб-приложениях и еще что-то.

Но хорошо, давайте предположим, что вы решили жить в несколько вонючей экосистеме Maven; то вам следует, конечно, следовать правилам Maven как можно более строго.

Ответ 5

Да, это соглашение maven, но даже если вы не используете maven, есть преимущества для его использования:

  • У людей, новых для проекта, будет более легкое время, приближающееся к скорости, так как это "стандартный"
  • это соглашение является гибким и имеет место для кода, отличного от Java, и других вещей, которых у вас нет на данный момент. Это одна из причин, по которой она популярна, и вы можете обнаружить, что она развивается лучше, чем схема, которую вы придумали сами.
  • если вы хотите перейти на maven в какой-то момент, это будет легко

Хотя я бы не стал спорить о том, что вы должны переключиться, чтобы переключиться, при запуске нового проекта действительно нет причин не использовать его - если вы не согласитесь философски с тем, как он нарушает код.