我們正在將一個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