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

В maven, в чем разница между основными/ресурсами и main/config?

Я хочу поместить файл конфигурации в мой проект Maven. Глядя на стандартный макет каталога, есть два места, которые кажутся разумными, "src/main/resources" и "src/main/config". Может ли кто-нибудь объяснить разницу между ними и объяснить, когда вы поместите что-то в config и когда в resources?

В этом случае файл, на который я смотрю, ehcache.xml, но мой вопрос не специфичен для ehcache, мне любопытно для log4j.properties и т.д.

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

4b9b3361

Ответ 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