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

Как написать maven build для добавления ресурсов в classpath?

Я создаю банку, используя maven с простой установкой maven. Если я добавлю файл в src/main/resources, его можно найти в пути к классам, но в нем есть папка с конфигурацией, в которой я хочу, чтобы этот файл был отправлен, но перемещение его внутри папки конфигурации заставляет его исчезнуть из пути к классам.

4b9b3361

Ответ 1

Если вы поместите что-либо в каталог src/main/resources, то по умолчанию это окажется в вашем конечном *.jar. Если вы ссылаетесь на него из какого-то другого проекта и его нельзя найти в пути к классам, то вы сделали одну из этих двух ошибок:

  1. *.jar загружен неправильно (возможно, опечатка в пути?)
  2. вы не обращаетесь к ресурсу правильно, например: /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".

У вас есть два возможных пути к этому.

  1. поместите все свои файлы ресурсов (отличные от файлов Java) в "src/main/resources" - это настоятельно рекомендуется

  2. Добавьте в свой pom (плагин ресурсов):

 <resources>
       <resource>
           <directory>src/main/resources</directory>
        </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
  </resources>