SpringBoot 没有主清单属性 (maven)



运行时我的jar文件:java -jar target/places-1.0-SNAPSHOT.jar

我收到下一个错误:

在目标/位置 1.0 快照中没有主清单属性

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

Mavenpackage生命周期阶段,Spring Boot Maven 插件增强了 jar 存档,原始 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插件repackage目标的更多详细信息。

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

绒球.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);
}
}

您可以指定父POM,例如:

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

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

使用以下命令恢复你的jar战争

mvn package spring-boot:repackage

在父节点中添加插件plugins如下所示.xml pom:

<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中添加了构建标签.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>

在pom中添加这个.xml

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

最新更新