Maven no construye ningún atributo de manifiesto principal

agiro

Estoy creando una pequeña aplicación con Maven que tiene dependencias y es un archivo jar ejecutable.

Aquí está mi pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.company</groupId>
    <artifactId>site-downloader</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>com.company.siteripper</groupId>
            <artifactId>common-interfaces</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>
                                        com.company.Main
                                    </mainClass>
                                </manifest>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

La compilación se completa sin problemas, pero al ejecutar el jar, escribe

sin atributo de manifiesto principal, en el repositorio local de maven / my jar .

Busqué ayuda en los docs y Baeldung también sin éxito.

Busco ayuda para que el jar incluya sus dependencias y sea ejecutable al mismo tiempo.

Editar:

Actualicé mi pompara usar el jar y los complementos de dependencias en lugar del ensamblaje. Aquí está el pom actualizado:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.company</groupId>
    <artifactId>site-downloader</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>com.company.siteripper</groupId>
            <artifactId>common-interfaces</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>
                                com.company.Main
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/libs
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Pero obtengo un NoClassDefFoundErrorcuando lo ejecuto:

C: \ Users \ myusername \ Documents \ Commands> llamar java -jar D: .m2 \ repository \ com \ company \ site-downloader \ 1.0.0 \ site-downloader-1.0.0.jar -9gag https: // 9gag .com / gag / arGEvRX? refC: \ Users \ myusername \ Documents \ sites \ data \ android Error: se ha producido un error de JNI, verifique su instalación y vuelva a intentarlo. Excepción en el hilo "main" java.lang.NoClassDefFoundError: org / openqa / selenium / WebDriver en java .lang.Class.getDeclaredMethods0 (método nativo) en java.lang.Class.privateGetDeclaredMethods (fuente desconocida) en java.lang.Class.privateGetMethodRecursive (fuente desconocida) en java.lang.Class.getMethod0 (fuente desconocida) en java.lang .Class.getMethod (Fuente desconocida) en sun.launcher.LauncherHelper.validateMainClass (Fuente desconocida) en sun.launcher.LauncherHelper.checkAndLoadMain (Fuente desconocida) Causado por: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver en java.openqa.selenium.WebDriver .net.URLClassLoader.findClass (Fuente desconocida) en java.lang.ClassLoader.loadClass (Fuente desconocida) en sun.misc.Launcher $ AppClassLoader.loadClass (Fuente desconocida) en java.lang.ClassLoader.loadClass (Fuente desconocida) ... 7 más

dkb

Así es como resolví su problema:
ignore la lógica empresarial, ya que estoy usando MongoDB, agregué el controlador MongoDB como una dependencia y puedo ejecutar con el comando java -jar.
El objetivo final es el mismo que el tuyo.
Estoy usando el complemento Maven-Shade.

Proyecto de pago del código fuente de Github:
descomprimir, compilar, probar
O
1. Crear un proyecto experto
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4

  1. Actualice pom.xml con el siguiente código de cliente mongo agregado desde OP e imprimiendo nombres de colección
  2. Ejecutar mvn clean package
  3. Ejecutar la java -jar test.jarsalida que obtuve es:
INFO: Opened connection [connectionId{localValue:1, serverValue:9}] to localhost:27017
Jun 01, 2019 8:17:22 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 5]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=2249770}
Jun 01, 2019 8:17:22 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Opened connection [connectionId{localValue:2, serverValue:10}] to localhost:27017
admin
config
local
test
[XenonSuite] Successfully connected to MongoDB

pom.xml (ignore los nombres de los paquetes)
Verifique la configuración del complemento de sombra

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>test</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <mainClass>test.App</mainClass>
  </properties>

  <packaging>jar</packaging>

  <dependencies>

  <!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.10.2</version>
    </dependency>


    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.1</version>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
              <configuration>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <transformers>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                    <mainClass>test.App</mainClass>
                  </transformer>
                </transformers>
                <finalName>test</finalName>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
  </build>
</project>

Hay varias formas de resolver este problema Ref: https://www.baeldung.com/executable-jar-with-maven

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

maven: ningún atributo principal de manifiesto

OpenShift: ningún atributo principal de manifiesto en el proyecto maven jar

Ningún atributo de manifiesto principal en el archivo .jar

SpringBoot no principal atributo manifiesto (maven)

IntelliJ Maven JAR "No hay error de atributo de manifiesto principal"

Ejecutar Java JAR - ningún error manifiesto principal atributo

Cargador de muelle de composición de: ningún atributo principal de manifiesto en /app.war

JMH sin atributo de manifiesto principal

JMH sin atributo de manifiesto principal

JMH sin atributo de manifiesto principal

Jar de Java: sin atributo de manifiesto principal

Maven: sin atributo de manifiesto principal, en target / xx.jar, no se puede ejecutar el archivo jar

Sin atributo manifiesto principal: IntelliJ

"Sin atributo de manifiesto principal" en ----. Jar Netbeans

Sin principal atributo de manifiesto, en server.jar

"sin atributo de manifiesto principal" al intentar ejecutar fat jar

No se puede especificar el atributo de manifiesto principal en Intellij

error al ejecutar un jar: "sin atributo de manifiesto principal"

Error de Heroku: sin atributo de manifiesto principal, en el archivo JAR para la aplicación de arranque de primavera

SecurityException durante la ejecución del archivo jnlp (falta el atributo de manifiesto de permisos requeridos en el jar principal)

Gradle- no hay atributo manifiesto principal

Falta el atributo obligatorio de versión de manifiesto

No se pudo cargar el atributo de manifiesto de clase principal mientras se ejecutaba java -jar

La entidad no tiene definido ningún atributo de clave principal.

Creando Jar con Intellij 2016 - Sin atributo manifiesto principal

¿Por qué no se ha podido cargar el atributo de manifiesto de clase principal desde un archivo JAR?

Error al ejecutar el archivo jar desde la línea de comando: "sin atributo de manifiesto principal"

Implementar el archivo .war en el contenedor de Docker: sin atributo de manifiesto principal en app.war

Error de fusión de manifiesto: aplicación de atributo @ appComponentFactory servicios de Google Play

TOP Lista

CalienteEtiquetas

Archivo