escenario problemático
IDEA ejecuta
mvn clean package -DskipTest=true
el comando o usa herramientas paraMaven菜单
realizar operaciones de empaquetado y luego,java -jar app.jar
después de ejecutar el comando, indica que no hay ningún atributo de manifiesto principal en el jar.
D:\WorkSpace\demo\target>java -jar demo-SNAPSHOT.jar
demo-SNAPSHOT.jar中没有主清单属性
Análisis de causa
Este error suele deberse a que al archivo JAR generado le falta un atributo de manifiesto principal. Al ejecutar un archivo JAR mediante un comando, la JVM debe buscar un archivo de manifiesto
java -jar
que contenga propiedades en el archivo JAR .Main-Class
Si no se encuentra esta propiedad, se producirá este error.
Análisis de confirmación
Abra el paquete Jar y vea el directorio jar en el que se creó, puede ver que hay un archivo MANIFEST.MF. Este archivo es el directorio de manifiesto que se buscará cuando se ejecute el jar. Los datos del manifiesto principal son la clase principal que se ejecutará, es decir, la clase donde se encuentra la entrada de la función principal.
Normalmente, habrá uno en el archivo de manifiesto:
Main-Class:cn.ybzy.demo.mainDemo
solución
Agregar clase principal
Cree manualmente un archivo que contenga
Main-Class
propiedades de manifiestoMANIFEST.MF
y agréguelo al archivo JAR
Abra el paquete Jar y MANIFEST.MF
agregue Main-Class al archivo.
Main-Class:cn.ybzy.demo.mainDemo
Usar complementos
1. Utilice maven-jar-plugin
complementos
El complemento se utiliza en el archivo pom.xml
maven-jar-plugin
y<mainClass>
las propiedades se especifican en él.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
2. Utilice maven-shade-plugin
complementos
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.MainClass</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>