No se puede encontrar la clase de jar en el complemento maven

Estoy haciendo un complemento maven para iniciar, detener y borrar una base de datos. Estoy usando hsqldb para ello. Tengo una clase (llamada ServerStart) para iniciar la base de datos:

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.hsqldb.Server;
import org.hsqldb.util.SqlFile;

public static void main(String[] args) {

    System.out.println("Starting server...");
    createServer();

    try {
        createADatabase(dbName);
        System.out.println("Server started!");

    } catch (Exception e) {
        e.printStackTrace();
    }
}

Cuando ejecuto la clase principal en Eclipse (clic derecho y ejecutar como JavaApplication), funciona. Pero cuando trato de ejecutarlo desde la línea cmd con mi comando mvn, aparece este error:

Exception in thread "main" java.lang.NoClassDefFoundError: org/hsqldb/Server
at sample.plugin.hello_maven_plugin.ServerStart.createServer(ServerStart
.java:50)
at sample.plugin.hello_maven_plugin.ServerStart.main(ServerStart.java:37)
Caused by: java.lang.ClassNotFoundException: org.hsqldb.Server
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 2 more

Cuando ejecuto el comando mvn, intenta iniciar ServerClass externamente, haciendo esto:

startOptions = new String[] {"java", "-cp", System.getProperty("user.dir") + "/target/classes/", ServerStart.class.getName()};
new ProcessBuilder(startOptions).start();

Supongo que olvidé algo para agregar en mi archivo pom.xml, por lo que incluye el hsqldb.jar, pero no tengo idea de qué. Este es mi archivo pom:

<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>sample.plugin</groupId>
<artifactId>hsqldb-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>

<name>hsqldb-maven-plugin</name>
<url>http://maven.apache.org</url>

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>3.0.3</version>
  </dependency>
  <dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
  </dependency>

  <dependency>
    <groupId>hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>1.8.0.10</version>
  </dependency>
</dependencies>  



<build>
  <plugins>
      <plugin>
          <groupId>sample.plugin</groupId>
          <artifactId>hsqldb-maven-plugin</artifactId>
          <version>1.0-SNAPSHOT</version>         
      </plugin>  
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
      </plugin>    
  </plugins>
</build>

</project>

Espero que mi pregunta sea lo suficientemente clara, y también espero que alguien pueda ayudarme.

Saludos cordiales,

Walle

Respuesta 1

Tengo 2 aplicaciones implementadas en tomcat, quiero usarlas en los archivos de recursos de un proyecto ubicados en la carpeta WEBINF de otros proyectos. ¿Puedo tener acceso a otro proyecto como este? en mi proyecto AI quiere ...

La clase Java expone algún método getStuff (); a través de ahorro a un cliente php para que todos los usuarios interactúen con archivos .php que se conectan a Java a través de ahorro ... ¿todavía necesito tomcat / glassfish, etc. o el jdk ...

Estoy tratando de construir el embarcadero 6.1.26 desde la fuente usando Maven, estoy ejecutando el comando "mvn" para construirlo, sin embargo, al final del proceso de construcción obtengo un error de construcción de terracota. La salida está en: ...

Creo que mi pregunta es similar a: BulkLoader -export_transform O https://stackoverflow.com/questions/3220911/gae-datastore-export-transform Básicamente, estoy usando el cargador masivo para hacer copias de seguridad y restaurar ...