SpringBoot没有主要清单属性(maven)

问题描述 投票:0回答:8

运行我的 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);
    }
}

知道我还能尝试什么吗?

java maven spring-boot manifest spring-boot-maven-plugin
8个回答
125
投票

尝试将

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>

46
投票

Maven

package
生命周期阶段,jar 存档通过 Spring Boot Maven Plugin 和原始 jar 文件(应使用标准 maven-jar-plugin 构建)进行了增强被替换为 enhanced executable 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 插件

repackage
目标的更多详细信息。


24
投票

3件事:
- 你的 pom 中有父条目。
- 验证您的插件是否位于 pom 的构建部分中。
- 您有一个带有 @SpringBootApplicaion 注释的类。

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);
    }

}

4
投票

您可以指定一个父级 POM,例如:

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

在打包目标期间,将执行重新打包目标,然后您将获得一个可执行的jar。


4
投票

使用以下命令恢复您的 jarwar

mvn package spring-boot:repackage

plugins
父节点中添加插件,如下所示在pom.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>
   



        

3
投票

在 pom.xml 中添加构建标签,如下所示为我解决了问题。

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

0
投票

添加下面的插件。这对我有用

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

0
投票

在 pom.xml 中添加此内容

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
© www.soinside.com 2019 - 2024. All rights reserved.