ProgramingTip

Maven에서 생성 된 jar에서 리소스를 제외하는 방법은 무엇입니까?

bestdevel 2020. 12. 28. 21:56
반응형

Maven에서 생성 된 jar에서 리소스를 제외하는 방법은 무엇입니까?


이 가이드를 사용하여 파일 이있는 실행 가능한 가능한 jar를 만들면 모든 속성도 해당 jar에 패키지됩니다. 발생을 막는 방법? 감사합니다.

업데이트 : Maven 리소스 설치를 사용하여 Eclipse에서 사용할 때 내 응용 프로그램이 속성-> Java 응용 프로그램을 마우스 오른쪽 버튼 클릭으로 사용할 수 없습니다.

업데이트 : 유용한 답변에 감사드립니다. Maven을 배우는 데 시간을 것이 더 좋을 것입니다. 지금은 가장 간단한 솔루션을 선택하기 만하면됩니다.


해당 속성 파일을 src/test/resources. 의 파일은 src/test/resources이클립스 내에서 자동으로 사용할 수 eclipse:eclipse없습니다.


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/resourcesMaven에서 제공 하는 저장하지 않습니다 . 그것들을 제외 물론 할 수 는 있지만 ( chkal에서 제공 한-link를 사용하여 ) 디렉토리 src/main/external-resources와 관련된 규칙을 유지하려면 다른 디렉토리 (예 : 를 만드는 것이 좋습니다 src/main/resources.

후자의 경우 리소스를 JAR 파일로 독립적으로 전달해야합니다 (어셈블리를 사용하여 수행 할 수 있음). 당신이 당신의 이클립스 환경에서 액세스해야하는 경우에 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/은 여전히 ​​클래스 경로에서 사용할 수 있으며


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 을 사용하는 것입니다 . 예를 들어 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>

그러나 이것은 모든 아티팩트에서 파일을 제외하므로 모든 상황에서 실행 가능하지 않을 수 있습니다.

참조 URL : https://stackoverflow.com/questions/4113697/in-maven-how-to-exclude-resources-from-the-generated-jar

반응형