¿Por qué especificar la clase principal en pom.xml?
En la imagen puedes ver dos frascos. El paquete en ejecución kafkastormtest1-0.0.1-SNAPSHOT.jar es el código y el paquete jar de su proyecto después de usar mvn para empaquetarlo. kafkastormtest1-0.0.1-SNAPSHOT-jar-with-dependencies.jar, esta es la dependencia paquete Contiene su código fuente y los paquetes correspondientes, así como los paquetes dependientes.
Si se produce el siguiente error al utilizar kafkastormtest1-0.0.1-SNAPSHOT.jar para enviar la topología al clúster:
La solución a este error:
Busque pom.xml en el directorio raíz de su proyecto. Agregue el siguiente contenido a este archivo de configuración:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>kafkastorm.kafkastorm.TopicMsgTopology</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
Nota: asegúrese de colocar el contenido anterior en <pligins>contenido anterior</plugins>.
Esto garantiza que el envío directo de kafkastormtest1-0.0.1-SNAPSHOT.jar se pueda enviar correctamente al clúster.