我们正在将一个buildfile从ant转换为maven插件。我们试图在maven插件中启动/停止数据库(hsqldb)。在maven插件中设置fork和spawn
我们成功地启动了数据库。但是我们认为插件执行时插件会停止数据库。数据库应该在执行后继续运行,但似乎马上停止。我们的猜测是我们应该使用'fork'和'spawn'属性(它们也位于我们的ant的build.xml中),但我们并不知道如何在我们的java类中实现它们我们的DatabaseController(它从AbstractMojo扩展)。
任何想法?
我们正在使用HSQLDB,THISIS代码如何初始化:
hsqlServer = new Server();
hsqlServer.setLogWriter(null);
hsqlServer.setSilent(true);
hsqlServer.setDatabaseName(0, "database");
hsqlServer.setDatabasePath(0, "file:data/database");
getLog().info("Starting server!");
hsqlServer.start();
当我们运行该插件后,数据库启动时,我们甚至设法创建表并将数据写入到它。然后插件停止,服务器自动停止。
如果我们运行另一个插件,一个停止服务器,我们总是在这条线得到一个NullPointerException:
hsqlServer.stop();
亲切的问候,
的Jeroen
那么,如果你在'hsqlServer.stop()'得到一个NullPointerException,那么'hsqlServer'必须为null,对吧?或者你的意思是'hsqlServer.stop()'_throws_一个NullPointerException?在这种情况下,请提供堆栈跟踪。 – 2011-05-06 13:08:51
nullPointerException已修复,我们现在可以在cmd中运行数据库。问题是:当我们运行插件时,插件停止时数据库仍然关闭。我们创建了一些循环来保持数据库的活跃,并且它完全可以工作。现在唯一的问题是:我们不能在cmd中做任何事情,因为程序在循环中被“困住”,我们想避免这种情况。也许还有其他一些方法可以解决这个问题,但我想不出除叉子和/或衍生物之外的东西。 – Walle 2011-05-06 14:13:09