Maven에서 생성 된 jar에서 리소스를 제외하는 방법은 무엇입니까?
이 가이드를 사용하여 종속성이있는 실행 가능한 jar를 만들면 모든 속성 파일도 해당 jar에 패키지됩니다. 발생을 막는 방법? 감사.
업데이트 : Maven 리소스 플러그인을 사용하여 제외하려고했지만 Eclipse에서 실행할 때 내 응용 프로그램이 속성 파일을 찾지 못합니다 (모듈-> 실행 도구-> Java 응용 프로그램을 마우스 오른쪽 버튼으로 클릭)
업데이트 : 유용한 답변에 감사드립니다. 나는 Maven을 배우는 데 시간을 보내는 것이 더 좋을 것이라고 생각합니다.
해당 속성 파일을 src/test/resources
. 의 파일은 src/test/resources
Eclipse 내에서 자동으로 사용할 수 eclipse:eclipse
있지만 Maven의 패키지 JAR에는 포함되지 않습니다.
jar / target 디렉토리에서 파일을 제외하려면 <excludes>
pom.xml 파일에서 태그를 사용할 수 있습니다 .
다음 예에서는 .properties
확장자가있는 모든 파일 이 포함되지 않습니다.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>*.properties</exclude>
</excludes>
<filtering>false</filtering>
</resource>
</resources>
</build>
규칙에 따라 디렉토리 src/main/resources
에는 애플리케이션에서 사용할 리소스가 포함됩니다. 따라서 Maven은 최종 JAR
.
따라서 응용 프로그램 getResourceAsStream()
에서 리소스가 클래스 경로에로드 되므로 메서드를 사용하여 액세스합니다 .
애플리케이션 외부에 있어야하는 경우 src/main/resources
Maven에서 번들로 제공하므로 저장하지 마십시오 . 물론 그것들을 제외 할 수 는 있지만 ( chkal에서 제공 한 링크를 사용하여 ) 디렉토리 src/main/external-resources
와 관련된 규칙을 유지하려면 다른 디렉토리 (예 :) 를 만드는 것이 좋습니다 src/main/resources
.
후자의 경우 리소스를 JAR 파일로 독립적으로 전달해야합니다 (Assembly 플러그인을 사용하여 수행 할 수 있음). 당신이 당신의 이클립스 환경에서 액세스해야하는 경우에 가서 Properties
다음에, 프로젝트의 Java Build Path
에서 Sources
(예를 들어, 폴더를 추가, 탭 src/main/external-resources
). Eclipse는이 디렉토리를 클래스 경로에 추가합니다.
에있는 속성 파일을 의미 src/main/resources
합니까? 그런 다음 maven-resource-plugin을 사용하여 제외해야합니다. 자세한 내용은 다음 페이지를 참조하십시오.
http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html
이것은 Maven JAR 플러그인 사용을 정확히 요구합니다.
예를 들어, src/test/resources/
최종 항아리에서 모든 항목을 제외하려면 다음을 입력하십시오.
<build>
<plugins>
<!-- configure JAR build -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<excludes>
<exclude>src/test/resources/**</exclude>
</excludes>
</configuration>
</plugin>
...
아래의 파일 src/test/resources/
은 여전히 클래스 경로에서 사용할 수 있으며 결과 JAR에 포함되지 않습니다.
maven-jar-plugin을 사용하여 maven jar를 생성하는 동안 특정 파일 패턴을 제외합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3</version>
<configuration>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.exe</exclude>
<exclude>**/*.java</exclude>
<exclude>**/*.xls</exclude>
</excludes>
</configuration>
</plugin>
이 가이드를 사용하여 종속성이있는 실행 가능한 jar를 만들면 모든 속성 파일도 해당 jar에 패키지됩니다. 발생을 막는 방법? 감사.
어디에서 속성 파일? 메인 병? 의존성?
전자의 경우 src/test/resources
제안 된 대로 리소스를 배치하는 것이 아마도 가장 간단하고 간단한 옵션 일 것입니다.
나중의 경우 특수한 .NET Framework를 사용하여 사용자 지정 어셈블리 설명자를 만들어야 excludes/exclude
합니다 unpackOptions
.
또 다른 가능성은 Maven Shade Plugin 을 사용하는 것입니다 . 예를 들어 IDE에서 로컬로만 사용되는 로깅 속성 파일을 제외합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven-shade-plugin-version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>log4j2.xml</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
This will however exclude the files from every artifact, so it might not be feasible in every situation.
ReferenceURL : https://stackoverflow.com/questions/4113697/in-maven-how-to-exclude-resources-from-the-generated-jar
'programing tip' 카테고리의 다른 글
쿼리를 사용하여 기존 테이블에 대한 SQL 작성 스크립트 생성 (0) | 2020.12.27 |
---|---|
ASP.NET MVC 로그인 ReturnUrl이 항상 NULL입니까? (0) | 2020.12.27 |
byte []로 드로어 블 (0) | 2020.12.27 |
Java의 NoClassDefFoundError : com / google / common / base / Function (0) | 2020.12.27 |
목록에서 가장 가까운 번호를 얻는 방법 (0) | 2020.12.27 |