Похоже, что есть много сообщений о похожих вопросах, однако я не смог найти именно то, что искал.Исключить ресурсы из java maven build
В принципе, у меня есть приложение Java, построенное с использованием Maven в Eclipse. Когда я выполняю проект с помощью Eclipse, он работает правильно, так как он может найти все файлы в моем каталоге ресурсов. Когда я делаю обычную банку с построением зависимостей с использованием maven, она также работает. Однако в последнем пункте я не могу заставить это работать:
Я хотел бы, чтобы ресурсы были исключены из основного исполняемого банку и помещены в каталог на том же уровне, что и сама банка. Это пользователь может просто внести изменения в настройки и выполнить баночку, так:
|--root level
|-Jar
|-resources
|-log4j.properties
|-settings.properties
У меня есть Maven-Jar-плагин делает это:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.org.interfaces.SharepointClient.App</mainClass>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>http://org.com</url>
<key>value</key>
<Class-Path>resources/settings.properties resources/log4j.properties</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>settings.properties</exclude>
<exclude>log4j.properties</exclude>
</excludes>
</configuration>
</plugin>
И у меня есть Maven сборка -plugin, создающий каталог ресурсов со всеми файлами ресурсов.
Проект собирает и формирует структуру каталогов, как я хочу, однако, файлы классов не могут найти что-либо в каталоге ресурсов, хотя я специально добавил им путь к классам в manifest.mf
Это Manifest для деталей:
Manifest-Version: 1.0
Build-Jdk: 1.7.0_17
Class-Path: resources/settings.properties resources/log4j.properties
lib/log4j-1.2.17.jar lib/jaxws-api-2.2.11.jar lib/jaxb-api-2.2.9.ja
r lib/javax.xml.soap-api-1.3.5.jar lib/javax.annotation-api-1.2-b03
.jar lib/jsr181-api-1.0-MR1.jar lib/saxon-9.1.0.8.jar lib/saxon-9.1
.0.8-dom.jar
Created-By: Apache Maven 3.0.5
Main-Class: com.org.interfaces.SharepointClient.App
key: value
url: http://org.com
mode: development
Archiver-Version: Plexus Archiver
Когда Выполненная я получаю сообщение об ошибке на этой строке кода:. PropertyLoader.class.getClassLoader() getResourceAsStream ("settings.properties");
Ошибка:
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
at com.org.interfaces.SharepointClient.PropertyLoader.getProps(PropertyLoader.java:29)
EDIT: Я только возникли проблемы с получением Java для загрузки ресурсов, а не зависимостей. Кажется, что они загружаются правильно.
Вы пробовали включать только «ресурсы /» в путь класса? –
Я пробовал, но ничто, кажется, не включает эти ресурсы. Это похоже на то, что classpath становится чем-то переписанным. – gcerkez
Чтобы проверить путь к классу, проверьте, что из 'java-приложения 'находится значение' System.getProperty («java.class.path») '. Вы также можете попробовать использовать 'getSystemResourceAsStream (String name)'. –