Я создаю банку, используя maven с простой установкой maven.
Если я добавлю файл в src/main/resources
, его можно найти в пути к классам, но в нем есть папка с конфигурацией, в которой я хочу, чтобы этот файл был отправлен, но перемещение его внутри папки конфигурации заставляет его исчезнуть из пути к классам.
Как написать maven build для добавления ресурсов в classpath?
Ответ 1
Если вы поместите что-либо в каталог src/main/resources
, то по умолчанию это окажется в вашем конечном *.jar
. Если вы ссылаетесь на него из какого-то другого проекта и его нельзя найти в пути к классам, то вы сделали одну из этих двух ошибок:
*.jar
загружен неправильно (возможно, опечатка в пути?)- вы не обращаетесь к ресурсу правильно, например:
/src/main/resources/conf/settings.properties
отображается на пути к классам какclasspath:conf/settings.properties
Ответ 2
Более простой альтернативой помещению вашего конфигурационного файла в подпапку src/main/resources будет усиление местоположений пути к классу. Это очень легко сделать с Maven.
Например, поместите свой файл свойств в новую папку src/main/config и добавьте следующее к вашему pom:
<build>
<resources>
<resource>
<directory>src/main/config</directory>
</resource>
</resources>
</build>
Теперь все файлы файлов в src/main/config считаются частью вашего пути к классам (обратите внимание, что при необходимости вы можете исключить некоторые из них из финальной банки: просто добавьте в раздел сборки:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>my-config.properties</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
чтобы my-config.properties можно было найти в вашем пути к классу при запуске вашего приложения из вашей среды разработки, но в вашем окончательном дистрибутиве останутся внешними из вашего баннера).
Ответ 3
По умолчанию maven не включает файлы из "src/main/java".
У вас есть два возможных пути к этому.
поместите все свои файлы ресурсов (отличные от файлов Java) в "src/main/resources" - это настоятельно рекомендуется
Добавьте в свой pom (плагин ресурсов):
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>