2014-12-15 3 views
0

비슷한 질문에 대한 게시물이 여러 개있는 것 같지만 찾고있는 것을 정확히 찾을 수 없습니다.java maven 빌드에서 리소스 제외

기본적으로 Eclipse에서 Maven을 사용하여 Java 응용 프로그램을 빌드했습니다. 이클립스와 함께 프로젝트를 실행할 때 내 리소스 디렉토리에있는 모든 파일을 찾을 수 있기 때문에 올바르게 작동한다. 종속성을 가진 정상적인 jar를 만들 때 maven을 사용하여 빌드하면 작동합니다. 그러나 마지막 항목에서이 작업을 수행 할 수 없습니다.

리소스를 기본 실행 파일 jar에서 제외하고 jar 파일과 동일한 수준의 디렉터리에 배치하려고합니다.

|--root level 
|-Jar 
|-resources 
    |-log4j.properties 
    |-settings.properties 

을 나는 받는다는 항아리 - 플러그인이 일을 가지고 :

<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> 

을 내가 받는다는 조립이이 사용자가 바로 설정을 변경하고 있으므로, 항아리를 실행할 수 있었다 -plugin은 모든 리소스 파일을 사용하여 resources 디렉토리를 만듭니다.

이 프로젝트는 컴파일하고 나는 그것이 그러나, 클래스 파일이이입니다 내가 특별히 MANIFEST.MF

에 그들에게 클래스 경로를 추가 한 경우에도 자원 디렉토리에서 아무것도 찾을 수없는 원하는 디렉토리 구조를 생성 . 나는이 코드 줄에 오류가 실행 된

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) 

편집 : 자원 만이 아니라 종속성을로드하는 데 문제가 점점 자바 데 . 그것들은 올바르게로드하는 것처럼 보입니다.

+0

클래스 경로에 "resources /"를 포함 시키려고 했습니까? –

+0

시도했지만 아무 것도 이러한 리소스를 포함하지 않는 것 같습니다. 클래스 패스가 무언가에 의해 덮어 쓰여지고있는 것과 같습니다. – gcerkez

+0

클래스 경로를 확인하기 위해 java app 내에서'System.getProperty ("java.class.path")'값이 무엇인지 확인하십시오. 'getSystemResourceAsStream (String name)'을 사용해 볼 수도 있습니다. –

답변

0

나는 이것이 더 어려울 필요가 있다고 생각합니다. 이 http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html을보십시오. 모든 종속성을 pom.xml 파일에 추가하기 만하면됩니다. 이렇게하면 코드를 전송할 때마다 maven이 pom.xml 파일을 사용하여 모든 의존성을 가진 프로젝트를 다시 빌드합니다. http://mvnrepository.com/을 사용하면 더 쉽게 사용할 수 있습니다. 저장소의 종속성을 검색하여 pom 파일에 복사하면됩니다.

+0

답장을 고맙게 생각하지만 문제는 의존성이 아닙니다. 나는 명령에 따라 종속물을 얻는다. 기본 jar 파일과 함께 번들되지 않을 때 classpath에 특성 파일과 같은 자원을 확보하는 데 문제가 있습니다. – gcerkez