maven сборка jar файла с картинками
Вопрос по получению jar файла при помощи мавена. Есть приложение с простым gui на swing. В этом приложении есть JLabel в который я вставляю картинку.
Вот пример кода вставки картинки и частичная структура проекта:
jLabelName.setIcon(new ImageIcon("src\\main\\resources\\images\\spritzExample.jpg"));
Проблема в том, что если делаю jar файл обычным способом, то картинки не подгружаются. Если кто может, помогите готовым кодом. Желательно для тупых. Я в мавен вообще не умею)
На всякий случай кидаю код pom файла
<?xml version="1.0" encoding="UTF-8"?>
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
<groupId>name</groupId>
<artifactId>name</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<packaging>jar</packaging>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.12.1</version>
</dependency>
</dependencies>
Ответы (2 шт):
Вообщем решил вопрос создав в корне проекта папку images и сделав там соответствующие картинки. В самом проекте пути к картинкам прописал так:
Obgect.setImages("images/imageName.jpg");
При сборки проекта в архив, вместе с jar файлом помещаю и папку с картинками. При распаковке всего архива в единую папку все файлы подгружаются нормально. На винде работает, мб на других ОС надо пользоваться спец инструментом для определения направления слэшей, но это не точно, не тестил)
Для этих целей существует maven-resources-plugin. В настройках нужно указать расположение папки с ресурсами и в какую папку их копировать в архиве:
<build>
<defaultGoal>install</defaultGoal>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>resources</targetPath>
</resource>
<resource>
<directory>src/main/properties</directory>
<targetPath>properties</targetPath>
</resource>
. . .
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
</plugin>
. . .
</plugins>
</build>
Затем получить ресурсы (если это картинки) можно так:
BufferedImage[] images = new BufferedImage[10];
for (int i = 0; i < 10; i++) {
images[i] = ImageIO.read(
ThisClassName.class.getResourceAsStream("/resources/" + i + ".png"));
}
