programing

maven-shade-plugin - 클래스 org.apache.maven에서 'resource'를 찾을 수 없습니다.플러그인그늘진 곳매니페스트 리소스 변환기

iphone6s 2023. 7. 21. 21:25
반응형

maven-shade-plugin - 클래스 org.apache.maven에서 'resource'를 찾을 수 없습니다.플러그인그늘진 곳매니페스트 리소스 변환기

Apache Maven 설명서 https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html 에서 메이븐 셰이드 플러그인의 구성을 직접 복사했습니다.

현재 설정은 다음과 같습니다.

      <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
      <execution>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <manifestEntries>
                <Main-Class>com.my.app.MainClass</Main-Class>
                <X-Compile-Source-JDK>1.8</X-Compile-Source-JDK>
                <X-Compile-Target-JDK>1.8</X-Compile-Target-JDK>
              </manifestEntries>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                <resource>.properties</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/spring.handlers</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/spring.schemas</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/spring.tooling</resource>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                <resource>META-INF/spring.factories</resource>
            </transformer>              
          </transformers>
        </configuration>
      </execution>
    </executions>
  </plugin>

그리고 다음과 같은 오류가 발생합니다.

[ERROR] 목표 org.apache.maven을 실행하지 못했습니다.플러그인:maven-shade-plugin:3.1.0:프로젝트 cpms-batch의 음영(기본값):mojo org.apache.maven의 구성을 구문 분석할 수 없습니다.플러그인:maven-shade-plugin:3.1.0:매개 변수 리소스에 대한 음영: 클래스 org.apache.maven에서 'resource'를 찾을 수 없습니다.플러그인그늘진 곳ManifestResourceTransformer -> [도움말 1] org.apache.maven.lifecycle.라이프사이클실행예외:목표 org.apache.maven을 실행하지 못했습니다.플러그인:maven-shade-plugin:3.1.0:프로젝트 cpms-batch의 음영(기본값):mojo org.apache.maven의 구성을 구문 분석할 수 없습니다.플러그인:maven-shade-plugin:3.1.0:매개 변수 리소스에 대한 음영: 클래스 org.apache.maven에서 'resource'를 찾을 수 없습니다.플러그인그늘진 곳org.apache.maven.lifecycle의 매니페스트 리소스 변환기입니다.내부의.Mojo Executer.org.apache.maven.lifecycle에서 실행(MojoExecutor.java:212)합니다.내부의.Mojo Executer.org.apache.maven.lifecycle에서 실행(MojoExecutor.java:153)합니다.내부의.Mojo Executer.org.apache.maven.lifecycle에서 실행(MojoExecutor.java:145)합니다.내부의.라이프사이클 모듈 작성기.org.apache.maven.lifecycle에 있는 buildProject(LifecycleModuleBuilder.java:116).내부의.라이프사이클 모듈 작성기.org.apache.maven.lifecycle에 있는 buildProject(LifecycleModuleBuilder.java:80).내부의.빌더.싱글 스레드.단일 스레드 작성기.org.apache.maven.lifecycle에서 빌드(SingleThreadBuilder.java:51).내부의.라이프사이클 시작.org.apache.maven에서 실행(LifecycleStarter.java:128)합니다.org.apache.maven의 기본 Maven.doExecute(기본 Maven.java:307).org.apache.maven의 기본 Maven.doExecute(기본 Maven.java:193).org.apache.maven.cli의 기본 Maven.execute(기본 Maven.java:106).org.apache.maven.cli에 있는 MavenCli.execute(MavenCli.java:863).org.apache.maven.cli에 있는 MavenCli.doMain(MavenCli.java:288).태양에 반사되는 메이븐 클리.메인(Maven Cli.java:199).네이티브 메서드 액세스 또는 임플.sun.reflect에서 0(Native Method)을 호출합니다.네이티브 메서드 액세스 또는 임플.sun.reflect에서 호출합니다(NativeMethodAccessorImppl.java:62).메서드 액세스 또는 임플을 위임합니다.java.lang.reflect에서 (MethodAccessorImppl.java:43)을 호출합니다.방법.org.codehaus.plexus.classworlds.launcher에서 (Method.java:498)을 호출합니다.org.codehaus.plexus.classworlds.launch의 Launch.launchEnhanced(Launcher.java:289).org.codehaus.plexus.classworlds.launcher에 있는 Launcher.launch(Launcher.java:229).org.codehaus.plexus.classworlds.launcher에 있는 Launcher.mainWithExitCode(Launcher.java:415).Launcher.main(Launcher.java:356) 원인: org.apache.maven.플러그인플러그인 구성예외:mojo org.apache.maven의 구성을 구문 분석할 수 없습니다.플러그인:maven-shade-plugin:3.1.0:매개 변수 리소스에 대한 음영: 클래스 org.apache.maven에서 'resource'를 찾을 수 없습니다.플러그인그늘진 곳org.apache.maven에 있는 매니페스트 리소스 변환기입니다.플러그인내부의.org.apache.maven에 있는 기본 MavenPluginManager.pumulatePluginFields(기본 MavenPluginManager.java:662)입니다.플러그인내부의.org.apache.maven에 있는 기본 MavenPluginManager.getConfiguredMojo(기본 MavenPluginManager.java:594).플러그인기본 빌드 플러그인 관리자입니다.org.apache.maven.lifecycle에서 Mojo(DefaultBuildPluginManager.java:121)를 실행합니다.내부의.Mojo Executer.execute(MojoExecutor.java:207) ... 20개 이상의 원인: org.codehaus.plexus.component.configurator.구성 요소 구성예외: org.apache.maven 클래스에서 'resource'를 찾을 수 없습니다.플러그인그늘진 곳org.eclipse.sisu.plexus에 있는 매니페스트 리소스 변환기입니다.org.codehaus.plexus.component.configurator.converters.composite에 CompositeBeanHelper.set 속성(CompositeBeanHelper.java:252).org.codehaus.plexus.component.configurator.configurator.converters.composite에 있는 ObjectWithFieldsConverter.processConfiguration(ObjectWithFieldsConverter.java:101)입니다.org.codehaus.plexus.component.configurator.configurator.converter.composite의 구성에서 개체(개체:FieldsConverter.java:57)를 사용합니다.org.codehaus.plexus.component.configurator.configurator.converters.composite의 하위 항목(AbstractCollectionConverter.java:54)에서 AbstractCollectionConverter.fromChildren.org.eclipse.sisu.pllexus의 구성(ArrayConverter.java:52)에서 ArrayConverter.fromConverter.org.eclipse.sisu.pllexus에서 복합 BeanHelper.convert 속성(복합 BeanHelper.java:273).org.codehaus.plexus.component.configurator.converter.composite에 CompositeBeanHelper.set 속성(CompositeBeanHelper.java:210).org.codehaus.plexus.component.configurator에 있는 ObjectWithFieldsConverter.processConfiguration(ObjectWithFieldsConverter.java:101)입니다.org.apache.maven에 있는 BasicComponentConfigurator.configureComponent(BasicComponentConfigurator.java:34).플러그인내부의.기본 MavenPluginManager.pumulatePluginFields(기본 MavenPluginManager.java:632) ... 23개 이상 [오류]

나는 그 오류에 대한 여러 질문들을 보았지만 답이 없었습니다: 매개 변수 리소스에 대한 음영: 클래스 org.apache.maven에서 '리소스'를 찾을 수 없습니다.플러그인그늘진 곳매니페스트 리소스 변환기

클래스 org.apache.maven에서 'resource'를 찾을 수 없습니다.플러그인그늘진 곳매니페스트 리소스 변환기

해결할 수 있거나 이유를 찾은 사람이 있습니까?

이 게시물은 제 문제를 해결했습니다. https://github.com/spring-projects/spring-boot/issues/384

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.handlers</resource>
                            </transformer>
                            <transformer
                                implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
                                <resource>META-INF/spring.factories</resource>
                            </transformer>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.schemas</resource>
                            </transformer>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>${start-class}</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Spring Boot에는 자체 메이븐 셰이드 플러그인 구성이 있습니다.이 속성을 pom.xml에 추가합니다.

<properties>
  <start-class>com.lionmint.core.test.integration.apns.mock.MockAPNSServer</start-class>
</properties>

바보처럼 들리겠지만 음영 플러그인 구성에 ID와 단계를 추가해야 합니다(이유는 모르겠지만 작동합니다).

<executions>
  <execution>
    <id>shade-jar-with-dependencies</id>
    <phase>package</phase>
    <goals>
      <goal>shade</goal>
    </goals>
    <configuration>
      <transformers>
        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
          <manifestEntries>
            <Main-Class>com.my.app.MainClass</Main-Class>
          </manifestEntries>
        </transformer>
      </transformers>
    </configuration>
  </execution>
</executions>

언급URL : https://stackoverflow.com/questions/49215416/maven-shade-plugin-cannot-find-resource-in-class-org-apache-maven-plugins-sh

반응형