Я создаю инструмент командной строки, который опирается на некоторые файлы конфигурации.
При разработке я помещаю эти файлы в src/main/resources
, и к ним обращается getClass().getResourceAsStream("/config-file-name")
, что хорошо работает.
Я выбираю maven-assembly-plugin для сборки jar со всеми зависимостями.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.myproject.Scheduler</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-my-jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Все файлы конфигурации упакованы в jar, но я хочу разделить их.
Итак, я добавляю следующую конфигурацию,
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>conf.properties</include>
</includes>
<filtering>true</filtering>
<excludes>
<exclude></exclude>
</excludes>
<targetPath>..</targetPath>
</resource>
</resources>
После того, как это сделано, файлы конфигурации находятся рядом с jar, а не обернуты в jar.
Но мой код не может сейчас получить доступ к файлам.
Нужно ли мне изменить способ доступа к файлам в коде?
Или мне не нужно помещать эти файлы в src/main/resources/
, как-нибудь альтернативно?
Если кто-то знает, пожалуйста, помогите.
Спасибо.
Обновление: Наконец, я отказался от использования файла ресурсов maven, вместо этого я установил путь к файлу таким же, как и jar по умолчанию, все работает хорошо, за исключением жалоб на Eclipse.
Поскольку я хочу переместить файл конфигурации из jar и не хочу, чтобы он был в папке target / classes, поэтому я использую <targetPath>..</targetPath>
, чтобы переместить файл конфигурации в тот же каталог, что и файл jar.
Когда я заново генерирую настройки проекта eclipse, Eclipse говорит: «Невозможно вложить выходную папку« project / target / test-classes »в выходную папку« project / target ».
Кто-нибудь поможет мне