programing

SpringBoot 주 매니페스트 특성 없음(매븐)

fastcode 2023. 3. 6. 21:34
반응형

SpringBoot 주 매니페스트 특성 없음(매븐)

jar 파일을 실행할 때:java -jar target/places-1.0-SNAPSHOT.jar

다음 에러가 표시됩니다.

target/places-1.0-SNAPSHOT.jar에 메인 매니페스트 속성이 없습니다.

pom.xml를 포함합니다.spring-boot-maven-plugin:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.places.Main</mainClass>
    </configuration>
</plugin>

또, 그 유저에 대해서MANIFEST.MF파일을 작성하고 클래스를 지정했지만 도움이 되지 않았습니다.

또, 다음과 같이 시도했습니다.

<properties>
      <!-- The main class to start by executing "java -jar" -->
      <start-class>com.places.Main</start-class>
</properties>

메인 클래스:

@SpringBootApplication
public class Main {
    public static void main(String[] args) throws InterruptedException {
        SpringApplication.run(Main.class,args);
    }
}

내가 또 뭘 해볼 수 있을까?

추가해 보다repackage목표에서 실행 목표.

그렇지 않으면 플러그인을 명시적으로 호출해야 합니다.mvn package spring-boot:repackage.

목표가 추가되면 전화만 하면 됩니다.mvn package.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.places.Main</mainClass>
    </configuration>

    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

메이븐 동안 package 라이프 사이클 국면에서 jar 아카이브는 Spring Boot Maven Plugin에 의해 강화되고 원래 jar 파일(표준 maven-jar-plugin을 사용하여 구축되어야 함)은 확장 실행 가능한 jar로 대체됩니다.

따라서 다음 중 하나를 발행해야 합니다.spring-boot:repackage모듈을 구축할 때 목표를 설정합니다.

mvn package spring-boot:repackage

또는 를 추가합니다.goal플러그인 구성 내에서 명시적으로 다음을 수행합니다.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.places.Main</mainClass>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Spring Boot Maven 플러그인 목표에 대한 자세한 내용은 공식 문서를 참조하십시오.

3가지:
- 폼에 부모 엔트리가 있어요.
- 플러그인이 POM의 빌드 부분에 있는지 확인합니다.
- @SpringBootApplication 주석 클래스가 있습니다.

pom.xml:

...  
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
  </parent>

   <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
...

그리고 다음과 같은 수업입니다.

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

다음 명령을 사용하여 항아리 또는 전쟁을 다시 백업합니다.

mvn package spring-boot:repackage

플러그인 추가 위치pluginspom.xml과 같은 부모 노드:

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>                   
      <mainClass>com.sify.scdm.solutionconfigurator.ScdmApplication</mainClass>
   </configuration>
   <executions>
      <execution>
      <goals>
         <goal>repackage</goal>
      </goals>
      </execution>
   </executions>
</plugin>
   



        

부모 POM 을 지정할 수 있습니다.다음은 예를 제시하겠습니다.

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.1.4.RELEASE</version>
</parent>

패키지 목표 중에는 패키지 재패키지 목표가 실행되며 실행 가능한 jar가 제공됩니다.

아래와 같이 pom.xml에 빌드 태그를 추가하였습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

아래에 플러그인을 추가합니다.이건 내게 효과가 있었다.

 <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>1.6</version>
      <executions>
           <!-- Run shade goal on package phase -->
           <execution>
                <phase>package</phase>
                <goals>
                     <goal>shade</goal>
                </goals>
                <configuration>
                     <transformers>
                          <!-- add Main-Class to manifest file -->
                          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                               <mainClass>MainClass</mainClass>
                               <manifestEntries>
                                    <Class-Path>.</Class-Path>
                                </manifestEntries>
                          </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>
                     </transformers>
                </configuration>
           </execution>
      </executions>
</plugin>

언급URL : https://stackoverflow.com/questions/54867295/springboot-no-main-manifest-attribute-maven

반응형