如何将H2数据库嵌入到交付给客户端的jar文件中?
Posted
技术标签:
【中文标题】如何将H2数据库嵌入到交付给客户端的jar文件中?【英文标题】:How to embed H2 database into jar file delivered to the client? 【发布时间】:2010-12-14 19:16:26 【问题描述】:我将 H2 数据库用于嵌入式模式的桌面应用程序。当我将应用程序压缩成 jar 文件时,数据库文件被省略。所以,当我运行 MyApplication.jar 时,没有任何效果。使用 MyApplication.jar 嵌入/包含/连接 h2.jar 文件的正确方法是什么?或者也许还有另一种方法可以在捆绑包中交付数据库和应用程序?
【问题讨论】:
你是如何创建这个 JAR 文件的?您是在使用 Maven 等构建工具,还是只是从命令行运行jar
?
我使用 Eclipse。有一个导出到 jar 文件的选项,所以我使用该选项。
我建议花时间学习 Maven:sonatype.com/books/mvnref-book/reference/public-book.html -- 从长远来看,这项投资将获得多次回报。
【参考方案1】:
一种常见的方案是将h2.jar
放在相对于您的应用程序的lib
目录中,并在您的JAR 清单中包含一个Class-Path
条目及其对应的条目:
Class-Path: lib/h2.jar lib/…
附录:这个小的project 包含一个指向JAR specification 的链接和一个方便的实用程序,用于检查清单原位。
【讨论】:
@bancer:我已经在上面详细说明了。【参考方案2】:如果您使用 Maven 来构建您的项目,只需使用 maven-shade-plugin... 很好的结果和控制,我一直在使用它。
要嵌入所有依赖项,您可以编写如下内容:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
然后,只需一个普通的“mvn 包”,您就可以将所有依赖项的 jar 包含在您的应用程序 jar 中。
通过进一步配置,您可以控制包含哪些内容和不包含哪些内容。
【讨论】:
【参考方案3】:如果你想把 database 本身放在你的 jar 文件中,那么这个解释可能会有所帮助: http://www.h2database.com/html/features.html#database_in_zip
this thread in the H2 forum 也对此进行了讨论。
【讨论】:
【参考方案4】:如果您使用 maven 构建项目,请查看 maven-assembly-plugin (jar-with-dependencies)。这将生成单个 jar,其中包含所有依赖项。
【讨论】:
以上是关于如何将H2数据库嵌入到交付给客户端的jar文件中?的主要内容,如果未能解决你的问题,请参考以下文章