【问题标题】:How to bundle JNLP API with Maven Project如何将 JNLP API 与 Maven 项目捆绑在一起
【发布时间】:2011-06-06 10:00:38
【问题描述】:

我有一个需要JNLP API 的项目。我没有在 Maven Central 上找到它的工件,所以我添加了一个外部存储库,它为我的 pom.xml 提供了它。该存储库本周末离线。这是我第二次遇到这样的事情了。

我知道这几乎是 Maven 的不是的,但实际上我只是希望那个微小的 jnlp-api-1.5.0.jar 文件成为

  1. 在我的 SCM 中(我不想只为一个依赖项滚动我自己的 Maven 存储库)。
  2. 在项目构建时的编译范围内。

我必须转动哪些旋钮才能做到这一点?

【问题讨论】:

    标签: maven-2 jar dependencies jnlp


    【解决方案1】:

    从 JDK 7.0 开始,JNLP API 由 JRE 的 lib 目录中的 javaws.jar 文件提供,即 ${java.home}/lib/javaws.jar。可以使用maven依赖范围system

    <project>
      ...
      <dependencies>
        <dependency>
          <groupId>javax.jnlp</groupId>
          <artifactId>jnlp-api</artifactId>
          <version>7.0</version>
          <scope>system</scope>
          <systemPath>${java.home}/lib/javaws.jar</systemPath>
        </dependency>
      </dependencies>
      ...
    </project>
    

    【讨论】:

    • 现在我有了&lt;systemPath&gt;${basedir}/src/libs/jnlp-api-1.5.0.jar&lt;/systemPath&gt;,它就像一个魅力。甚至哈德森也喜欢它。谢谢!
    • Mac JDK 1.6 在 ${java.home}/lib/javaws.jar 中提供 jnlp 类。
    • 这似乎只适用于 Oracle JDK。使用 Waldheinz 提到的本地路径可能适用于一个项目,但如果这是另一个项目的依赖项,则该路径可能不再有效。
    【解决方案2】:

    您可以使用 maven-install-plugin 的 install-file 目标将 JAR 放入本地存储库中,并像通常在 POM 中一样引用它。命令是:

    mvn install:install-file -Dfile=/path/to/jnlp-api-1.5.0.jar -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=1.5.0 -Dpackaging=<packaging>
    

    将此命令放在脚本中并将其检入您的 SCM。这样,您(以及从事此项目的任何其他人)都可以轻松地将其安装到本地存储库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 2018-05-16
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      相关资源
      最近更新 更多