【问题标题】:Packaging up a project for deployment - Java打包项目以进行部署 - Java
【发布时间】:2012-10-10 16:24:51
【问题描述】:

我有一个 Java 应用程序(一个非常大的应用程序,有许多外部 .jar 依赖项以及对图像的依赖项),我需要将它打包,以便有人可以双击运行,例如。或者类似的简单的东西。

它使用Java Persistence,因此它需要在Java 项目的Persistence.xml 文件中指定的sql 连接。

我该如何打包?我在想:

  1. 安装过程应验证用户是否安装了 MySQL,如果没有,则指导他们安装它
  2. 安装过程可能会要求用户输入任何数据库的凭据,然后我可以在运行时更新 Persistence.xml

这是我的两个想法……但我不确定是否有解决此问题的已知方法。任何帮助将不胜感激!

【问题讨论】:

  • “这是我的两个想法” 这个措辞对我来说意味着“替代方案”,其中的点看起来像(策略)一个问题的 2 个不同部分。

标签: java deployment installation packaging


【解决方案1】:

我认为您应该看看嵌入式数据库解决方案,例如 H2。此外,您可以使用 maven 的 shadowing 或 jar 插件打包您的应用程序,激活 jar-with-dependencies 配置文件。

这将使您无需检查客户端计算机上运行的数据库服务器,还可以为您提供将应用程序捆绑在一个不错的 JAR 中的适当方法,尽管它有点大。

Maven 是一个构建生态系统和工具集,专为构建 Java 应用程序和执行代码而设计 - 并且通常可以执行您能想象到的任何其他可能对您的代码执行的操作。

它有丰富的 API 用于开发插件,许多开发人员已经利用了这个功能。有许多插件可用于构建、启动和打包您的应用程序,以及帮助您管理应用程序依赖项。

Maven 的阴影以maven-shade-plugin 的形式出现,可用here。它的作用是帮助您从所有依赖项创建单个 JAR 文件。此外,还有maven-jar-plugin,它提供了一个配置文件jar-with-dependencies。也可以从here 访问。

另一方面,H2 是一个成熟的 RDBMS。这是网站:http://www.h2database.com/html/main.htmlhere 是一个教程。

您可以在此处找到有关嵌入数据库的信息:

我还建议您使用 H2/Hibernate/Spring 的组合,这是一个非常简单的设置,并为您提供了非常丰富的功能和易于使用的 API。

希望对你有帮助:)

【讨论】:

  • 这对我来说似乎很有用。您能否再解释一下 H2 是什么以及 Maven 不隐藏以及提供我可以用来阅读更多有关这些内容的链接?
  • 当然可以。我将添加指向答案的链接,以使其对您更有用:)
【解决方案2】:

构建一个复杂的安装程序来检查大量的依赖关系,并在很多不同的平台上运行(我假设你想要的)是复杂的。

我建议您查看安装程序生成器;见What is the best installation tool for java?

我在一些产品中看到的另一种替代方法是使用 Perl 等脚本语言编写(非 GUI)安装程序或配置程序。

【讨论】:

    【解决方案3】:

    我使用 ANT 编写了一个安装程序,但没有 GUI。另外,我使用了 Iz Pack(不错的选择),所以我认为这取决于您希望它有多聪明,如果您应该使用它,还是非技术人员等。

    【讨论】:

      猜你喜欢
      • 2018-03-21
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 2011-03-09
      • 2016-08-29
      • 1970-01-01
      相关资源
      最近更新 更多