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

Расположение сгенерированных исходных файлов для структуры каталога maven

Помимо папки src/main/java у нас есть одна папка, которая содержит некоторые сгенерированные источники java, необходимые для основных источников. При необходимости генерация кода вызывается вручную. Сгенерированный источник отмечен в исходное репо. Все будет построено и упаковано вместе.

Каким будет лучшее место для сгенерированных java источников, которые собираются вместе с основными источниками? Должно ли быть:

  • /src/generated/java (следуя той же логике именования для src/testInt/java для тестов интеграции)
  • /generated-src/main/java (при столкновении с "Каталог src содержит весь исходный материал для построения проекта" )
  • /src/main/generated-java (ну... generated-java не является типом)
  • ...

Первый вариант кажется наиболее подходящим для этого случая. Как вы думаете? Есть ли что-нибудь в документах Maven, описывающих эту ситуацию (что я забыл)? Знаете ли вы какое-либо репо с аналогичной структурой?

Спасибо.

Ответ

Как было предложено @Absurd-Mind, направление, о котором мы думаем, состоит в том, чтобы разбить источник на подмодули (что хорошо работает в gradle). Таким образом, сгенерированный источник и некоторый другой родственный источник войдут в свой собственный подмодуль (они будут создавать отдельный артефакт), а остальные будут использоваться в другом подмодуле, который использует этот. Спасибо.

4b9b3361

Ответ 1

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

  • Исходный код генерируется автоматически во время процесса сборки. Тогда я бы использовал target/main/java/, target/test/java/ и так далее. Этот код не проверяется на CVS, так как вы можете легко его перестроить. Если вы очистите проект, каталог target будет удален, а источник будет восстановлен.

  • Исходный код генерируется вручную внешним инструментом или подобным: я бы использовал generated/src/main/java/, generated/src/test/java/, generated/src/main/resources/ и так далее. Этот код должен быть проверен. Преимущество заключается в том, что, как только вы увидите, что имя каталога верхнего уровня generated, вы знаете, что все файлы/каталоги ниже также генерируются. Также у вас есть стандартная структура каталога maven в каталоге верхнего уровня. Еще один момент заключается в том, что очистка легко, просто удалите generated и заново создайте ее, не просматривая многие другие каталоги (например, в вашем примере: src/main/generated-java и src/test/generated-java).

EDIT. Еще одним хорошим решением было бы создать проект maven, в котором будет только сгенерированный источник, например myproject-generated-1.0.3.jar. Этот проект будет зависеть от вашего реального приложения. Затем вы просто поместите свой сгенерированный источник int src/main/java.

Ответ 2

Насколько я знаю, нет стандартной структуры папок для сгенерированных источников. В моих проектах я предпочитаю обозначение типа src/gen/java.

Ответ 3

В хранилище исходных файлов проекта Maven в src/main/java, src/main/resources и хранилище тестовых классов в src/test/java.
В Maven сгенерированный код (код компиляции) сохраняется в target/ folder.
Когда вы создаете свой проект Maven, весь сгенерированный код должен быть обновлен в целевой папке.