В maven, в чем разница между основными/ресурсами и main/config?
Я хочу поместить файл конфигурации в мой проект Maven. Глядя на стандартный макет каталога, есть два места, которые кажутся разумными, "src/main/resources
" и "src/main/config
". Может ли кто-нибудь объяснить разницу между ними и объяснить, когда вы поместите что-то в config
и когда в resources
?
В этом случае файл, на который я смотрю, ehcache.xml
, но мой вопрос не специфичен для ehcache, мне любопытно для log4j.properties
и т.д.
Немного найденный поисковый запрос у этого человека был тот же вопрос, но ответы казались противоречивыми и не очень авторитарными.
Ответы
Ответ 1
Обмен по электронной почте на http://www.mail-archive.com/[email protected]/msg90985.html
говорит:
"Это все теория... Возможно, во время написания документов кто-то, кто участвовал в разработке Maven, считал полезным иметь каталог src/main/config, и поэтому он был включен в документы, но поскольку он никогда не был реализован в коде он не используется сегодня".
и
"Каталог [src/main/config] не отображается в пути к классам, поэтому классы приложений или тестов
не может ничего читать в нем ".
Так что просто используйте src/main/resources
.
Примечание. Я не знаю, верно ли это (я задаю вопрос), но это объясняет, почему так много людей в Интернете рекомендуют src/main/resources
для log4j.properties. Если люди согласны с тем, что это правильный ответ, можете ли вы сообщить мне (прокомментировать или проголосовать), я поставил его здесь, чтобы сохранить других людей, печатающих.
Ответ 2
scr/main/resources
- это место, где вы помещаете свои изображения, звуки, шаблоны, языковые пакеты, текстовые и двоичные файлы, используемые исходным кодом. Все файлы конфигурации, такие как excache.xml, log4j.properties, logback.xml и другие, относятся к src/main/config
.
Добавьте к своему pom.xml
:
<build>
<resources>
<resource>
<targetPath>.</targetPath>
<directory>src/main/config</directory>
</resource>
</resources>
</build>
Ответ 3
Включение src/main/config
в стандартное расположение каталога Maven было устранено частично из-за путаницы, вызванной между src/main/config
и src/main/resources
. Этот самый вопрос stackoverflow фактически упоминается в JIRA-билете для удаления src/main/config
из стандарта Maven.
Краткий ответ: используйте src/main/resources
not src/main/config
. Это (новый) путь Maven.
Ответ 4
Случай использования довольно прост, если вы спросите меня. (Кажется, src/main/config с тех пор удалил стандартную раскладку каталога)
- /src/main/resources переходят в jar и, следовательно, в classpath
-
/src/main/config предназначен для плагина сборки, где вы можете создать
zip файл:
hello-world.zip
lib/
<dependencies>
bin/
run.bat
run.sh
config/
config.properies