J'ai construit avec succès mon projet Spring MVC avec mvn clean package
en suivant ce tutoriel .
Maintenant j'essaye de faire fonctionner le service avec:
mvn clean package && Java -jar target/gs-serving-web-content-0.1.0.jar
Mais je reçois cette erreur:
Impossible de charger l'attribut manifeste Main-Class à partir de la cible/gs-servant-web-content-0.1.0.jar
Est-ce que je manque quelque chose?
Si vous travaillez avec Spring Boot, cela résoudra votre problème:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.2.5.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
Il se peut que vous manquiez le plug-in Spring Boot Maven.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
Vous devez le spécifier dans votre pom.xml - Cela rendra votre jar exécutable avec toutes les dépendances (remplacez your.main.class
):
<!-- setup jar manifest to executable with dependencies -->
<plugin>
<artifactId>maven-Assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.main.class</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
vérifier l'ordre de
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
il devrait être au-dessus
dockerfile-maven-plugin sinon le reconditionnement aura lieu
cela a résolu mon problème d'absence d'attribut principal dans manifest.
Tu es absent maven-jar-plugin
dans lequel vous devez ajouter la balise manifest
.
Pour le démarrage du printemps, j'ai créé un fichier MANIFEST.MF à l'intérieur META-INF dossier.
dans mon IDE STS, j'ai placé le dossier META-INFO dans le dossier src/main/resources comme suit:
le contenu du fichier MANIFEST.MF:
Manifest-Version: 1.0
Implementation-Title: bankim
Implementation-Version: 1.5.6.RELEASE
Archiver-Version: Plexus Archiver
Built-By: Yourname
Implementation-Vendor-Id: com.bankim
Spring-Boot-Version: 1.5.6.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.bankim.BankimApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_131
Implementation-URL: http://projects.spring.io/spring-boot/bankim/
**** Le manifeste ci-dessus a été créé pour moi en utilisant le "plug-in print-boot-maven" mentionné ci-dessus par "Mradul Pandey" (réponse donnée le 2 septembre 2015 à 4:50)
J'espère que cela t'aides
J'avais le spring-boot-maven-plugin
mais j'ai quand même eu l'erreur concernant la classe principale.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
Enfin, j'ai dû utiliser le maven-jar-plugin
et ajoutez le mainClass
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.org.proj.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Et c'était bien d'y aller!
Utilisation spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
et assurez-vous de définir property start-class
dans le pom.xml
<properties>
<!-- The main class to start by executing "Java -jar" -->
<start-class>org.example.DemoApplication</start-class>
</properties>
Alternativement, la classe principale peut être définie en tant qu'élément mainClass du plugin spring-boot-maven dans la section plugin de votre fichier pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>spring-boot</classifier>
<mainClass>${start-class}</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>