【问题标题】:Managing constantly-changing JNLP dependencies?管理不断变化的 JNLP 依赖项?
【发布时间】:2013-09-02 04:45:09
【问题描述】:

我们使用 JNLP 将 Swing 应用程序部署到我们的所有用户。使用 JNLP,您必须引用任何 JAR 依赖项的特定名称/版本,例如 widget-lib-1.4.7.jar

我们刚刚介绍了一个新项目,它将编译为可重用的 JAR,但它会迅速变化(每隔几天左右),因此版本号会经常变化。一旦完成,我们的 Swing 应用程序将依赖于这个新项目。

除非我们更改设置,否则每次我们发布此新依赖项的新版本时,我们都必须更新 JNLP 并重新发布它,正如我所说,这将非常频繁。

有什么方法可以从 JNLP 中调用 Ivy,或者以某种方式告诉 JNLP 包含目录的内容(然后有一个单独的进程始终确保 JAR 的最新版本在该目录中),或者我们可以做些什么,这样我们就不必经常更改 JNLP?

提前致谢!

【问题讨论】:

  • 您是否托管静态 JNLP 文件?你能用 JSP 或 Velocity 模板替换它吗?
  • 这是一个指向我们 JNLP 文件的 HTML 链接——您能详细说明一下您所说的 JSP 模板是什么意思吗?谢谢(+1)!

标签: java ivy jnlp dependency-management


【解决方案1】:

如果您的 JNLP 经常更新(或需要任何其他每个用户的参数,例如上传密钥),请不要使用静态文件。相反,使用 JSP、Velocity、Freemarker 或类似的模板引擎创建模板 JNLP 文件,并动态填写 JNLP 的字段,例如从数据库中。

【讨论】:

    【解决方案2】:

    我不确定这是否满足您的需求,但您可以为经常更改的库使用第二个 .jnlp。您的主应用程序的 .jnlp 将使用 <extension> 元素引用该 .jnlp。

    您的主应用程序的 .jnlp 将包含以下内容:

        <resources>
            <j2se version="1.7+"/>
            <jar href="MyApp.jar" main="true"/>
            <extension name="WidgetLib" href="WidgetLib.jnlp"/>
        </resources>
    

    WidgetLib.jnlp 看起来像这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp href="WidgetLib.jnlp"
          version="1.4.7"
          codebase="http://www.company.com/myapp/">
    
        <information>
            <title>Widget Library</title>
            <vendor>My Company</vendor>
            <description>Latest version of Widget Library</description>
            <offline-allowed/>
        </information>
    
        <security>
            <all-permissions/>
        </security>
    
        <resources>
            <jar href="widget-lib-1.4.7.jar"/>
        </resources>
    
        <component-desc/>
    </jnlp>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 2011-09-04
      • 1970-01-01
      • 2015-03-20
      • 2016-05-26
      • 2020-02-29
      • 2013-06-22
      相关资源
      最近更新 更多