[英]Add an embedded h2 database to an executable jar
我正在編寫一個小型 Java 應用程序,它將數據讀/寫到嵌入式 h2 數據庫。 出於開發目的,我想將數據庫添加到從我的應用程序生成的 jar 文件中。
用例是:用戶僅獲得交付的 jar 文件,並且能夠讀取和寫入其中嵌入的數據庫的數據。
有沒有辦法做到這一點?
注意:我正在 IntelliJ 中開發應用程序並使用 maven 構建項目
您似乎在問兩個不同的問題:
第一個很容易。 告訴您的依賴管理和構建工具,例如Maven或Gradle包括 H2。 這就是此類工具的工作,下載並安裝此類庫的副本。
對於 Maven,請參閱備忘單頁面以獲取當前 Maven 依賴項 XML 片段以包含在您的POM中。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
關於在 JAR 中捆綁數據庫的問題,請研究您的問題的評論。 他們指出,您無法在部署運行時寫入 JAR文件。 您的數據庫必須位於 JAR 文件之外。 各種操作系統在其文件系統中都有專門的位置供應用程序寫入此類數據文件。
一條評論建議您的代碼在 JAR 中查找數據庫。 如果找到,將該數據庫復制到 JAR 之外的另一個文件夾。 然后繼續使用該外部化副本。
這種方法可以奏效。 但我會選擇模式遷移。
使用模式遷移,在部署運行時創建一個新數據庫,然后運行一系列 SQL 腳本。 這些腳本執行DDL命令,例如創建表。 這些腳本運行DML命令以根據需要創建行。
您可以選擇架構遷移工具來定位、管理和運行這些腳本。 我更喜歡Flyway ,雖然Liquibase也很受歡迎。 其他人也可能存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.