Какие дополнительные соглашения о каталогах для проектов Maven?

Maven 2 использует стандартную компоновку каталогов для проектов, описанную здесь:

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

Что мне интересно: существуют ли рекомендуемые соглашения для других проектов, помимо простой библиотеки Java, проектов Java EE и WebApp? В частности, где разместить файлы ant, сценарии запуска, файлы конфигурации, примеры приложений и т. Д.

Кроме того, каковы правила размещения файлов вне дерева каталогов src /? Например, распространено ли размещать документацию в папке doc / (как родственник src)?

Есть ли страница, где собраны эти соглашения? Если нет, могут ли другие читатели привести примеры из своих собственных проектов?


person noahlz    schedule 06.02.2009    source источник


Ответы (2)


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

  • src / main / config - файлы конфигурации, скопированные и отфильтрованные в $ {project.build.directory} / config.
  • src / main / scripts - sh, bat, README и другие текстовые файлы, которые копируются и фильтруются в $ {project.build.directory}.
  • src / main / bin - двоичные файлы, которые не фильтруются и копируются в $ {project.build.directory}.
  • src / main / build - любые дополнительные скрипты, файлы ant или ресурсы, используемые процессом сборки, но не включенные в приложение.
  • src / main / assembly - Дескриптор сборки для создания сборки приложения.
  • Скопируйте зависимости в $ {project.build.directory} / lib с помощью плагина maven-dependency.
  • Бонусные баллы, если вы используете jar-файл с совместно используемым дескриптором сборки, который включает каталоги config и lib вместе со стандартными типами файлов для совместного использования со всеми вашими проектами. Хороший набор типов файлов по умолчанию для включения - это .sh, .bat и .exe с разрешениями для исполняемых файлов; .jar, .zip, .txt, .pdf, .xml, .properties, .conf, .ico, .png, .jpg со стандартными разрешениями.
  • Добавьте каталог config и префикс lib / в путь к классам, используя плагин maven-jar, чтобы создать работающий jar.
  • Добавьте профиль установщика, который создает сборку вашего приложения с помощью плагина maven-assembly и дескриптора сборки. Затем эту сборку можно использовать в отдельном проекте установщика, если это необходимо.
  • Избегайте размещения чего-либо еще на уровне src /. Вместо этого поместите документацию в каталог src / site / (например, src / site / sphinx) или src / doc, если вам действительно нужно.
  • Поместите всю вышеуказанную конфигурацию в родительский / корпоративный pom, чтобы поделиться со всеми своими проектами. Просто ссылайтесь на плагины maven-dependency, maven-resources, maven-jar и maven-assembly в своем проекте, чтобы создать все приложение почти без конфигурации (не забудьте установить основной класс для плагина maven-jar) .
person Brian Blonski    schedule 20.08.2014

Основная папка, в которую я помещаю дополнительные файлы конфигурации, находится в src / main / java / resources. Обычно я создавал там подкаталоги. У тестов могут быть свои собственные файлы конфигурации src / test / resources.

Вы можете использовать директивы в разделе сборки файла pom.xml, чтобы указать дополнительные каталоги ресурсов и места для копирования файлов в определенные места в целевом каталоге. Обычно возникает соглашение о языке или структуре, которые вы пытаетесь использовать. В этом случае беспорядок можно скрыть в родительском файле pom.xml.

См. http://maven.apache.org/pom.html#Resources.

person mxc    schedule 06.02.2009
comment
Имейте в виду, что эти каталоги ресурсов обычно портятся maven. Это может быть нежелательным поведением для настраиваемых пользователем файлов свойств или сценариев запуска. - person Kevin; 08.02.2009