Как написать maven build для добавления ресурсов в classpath? - PullRequest
40 голосов
/ 30 января 2012

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

Ответы [ 3 ]

70 голосов
/ 13 февраля 2012

Более чистой альтернативой размещения вашего конфигурационного файла в подпапке src / main / resources будет улучшение местоположения вашего classpath.Это очень легко сделать с 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 можно было найти в вашем classpath при запуске приложения из среды IDE, но в финальной версии он будет оставаться внешним по отношению к jar-файлу.распределение).

47 голосов
/ 30 января 2012

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

  1. *.jar загружен неправильно (возможно, опечатка в пути?)
  2. вы неправильно обращаетесь к ресурсу, например: /src/main/resources/conf/settings.properties отображается в classpath как classpath:conf/settings.properties
2 голосов
/ 01 октября 2018
By default maven does not include any files from "src/main/java". 
You have two possible way to that.
  1. put all your resource files (different than java files) to "src/main/resources" - this is highly recommended  
  2. Add to your pom (resource plugin):

 <resources>
       <resource>
           <directory>src/main/resources</directory>
        </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
  </resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...