SpringBoot no main manifest attribute (maven)
Solution 1
Try adding repackage
goal to execution goals.
Otherwise you would need to call the plugin explicitly as mvn package spring-boot:repackage
.
With the goal added, you have to call only 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>
Solution 2
During the Maven package
lifecycle phase, the jar archive is enhanced by Spring Boot Maven Plugin and the original jar file (that should have been built using the standard maven-jar-plugin) is replaced with an enhanced executable jar.
Hence you have either to issue the spring-boot:repackage
goal yourself when building your module:
mvn package spring-boot:repackage
Or add the goal
explicitly within the plugin configuration:
<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>
You can find more details about the Spring Boot Maven Plugin repackage
goal within the official documentation.
Solution 3
3 things:
- You have the parent entry in your pom.
- Verify that your plugin is in the build portion of the pom.
- You have a class with the @SpringBootApplicaion annotation.
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>
...
And a class that looks something like this:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Solution 4
You can specify a parent POM e.g. :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
During the package goal, the repackage goal will be executed and you'll then get an executable jar.
Solution 5
Reback your jar or war using the following command:
mvn package spring-boot:repackage
Add the plugin in plugins
parent node like below in 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>
JeyJ
Updated on July 08, 2022Comments
-
JeyJ almost 2 years
When running my jar file : java -jar target/places-1.0-SNAPSHOT.jar I'm getting the next error :
no main manifest attribute, in target/places-1.0-SNAPSHOT.jar
My pom.xml contains the spring-boot-maven-plugin :
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.places.Main</mainClass> </configuration> </plugin>
I also tried to create a MANIFEST.MF FILE and specifying the class but it didnt help.
In addition, I also tried :
<properties> <!-- The main class to start by executing "java -jar" --> <start-class>com.places.Main</start-class> </properties>
My main :
@SpringBootApplication public class Main { public static void main(String[] args) throws InterruptedException { SpringApplication.run(Main.class,args); } }
any idea what else can I try ?
-
JeyJ about 5 yearsIt helped ! Can you explain why I need to package it ?
-
Bandham Manikanta almost 4 yearsIf you have
spring-boot-starter-parent
in you pom, you don't need to definerepackage
goal in the plugin. Official doc: docs.spring.io/spring-boot/docs/2.3.0.RELEASE/maven-plugin/… -
Kevin Valdez almost 4 yearsThe reason for this is that you are no using spring as parent I assume you have it set on dependencyManagement, then you have to explicit define which goal to be hooked for spring-boot-maven-plugin ir order to get an executable jar file. In this case repackage.
-
Ajeetkumar over 3 yearsgithub.com/ajeetkumarv/healthlog I tried both repackage and plugin but did not work. main method is in application module
-
tmarwen over 3 yearsHi @Ajeetkumar, could you report a new question with your build configuration and point it out. I will be glad to help.
-
emoleumassi over 2 yearssimilar issue with multi module: stackoverflow.com/questions/70833195/…