Maven-webstart-plugin包含运行时依赖项

时间:2011-08-31 07:59:20

标签: maven jnlp java-web-start maven-webstart-plugin

使用maven-webstart-plugin构建jnlp时,我发现运行时依赖项没有包含在jnlp中。

我正在使用这样的模板:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="$jnlpspec" codebase="${url}/${appName}" href="${outputFile}">
    <information>
        <title>${appName}</title>
        <vendor>$project.Organization.Name</vendor>
        <homepage href="${url}/${appName}"/>
        <offline-allowed/>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="$j2seVersion"/>
        $dependencies
    </resources>
    <application-desc main-class="${main}" />
</jnlp>

如何包含运行时依赖项?好吧,我可以单独包括它们:

<plugin>
    <groupId>org.codehaus.mojo.webstart</groupId>
    <artifactId>webstart-maven-plugin</artifactId>
    <configuration>
      <dependencies>
        <includes>
          <include>groupId:artifactId</include>
          ...
        </includes>
      </dependencies>
      ...
    </configuration>
  </plugin>

...但理想情况下,我不想在每次向项目添加运行时依赖项时都记得改变它。

有没有办法指示插件包含所有运行时依赖项?

2 个答案:

答案 0 :(得分:1)

事实证明,默认情况下包括所有编译和运行时依赖项。

发生了什么事?

好吧,我也使用ant将jnlp部署到服务器上,在ant文件中,使用$dependencies设置mvn:dependencies,而不将范围指定为运行时。因此,添加范围会更改合并到jnlp文件中的$dependencies文件集。

答案 1 :(得分:0)

我使用父pom配置,其中一个模块是Web启动项目。我希望尽可能减少这一点。我只将依赖项编译为日志库,主应用程序模块(同一父pom结构中的另一个模块),以及包含本机二进制文件的jar文件。除了这些编译依赖项之外,我还有一些测试依赖项和对本地javaws.jar文件的系统依赖性。

maven webstart插件似乎包含来自模块的任何运行时依赖项,这些模块作为编译依赖项包含在Web Start项目中。 对于您来说,以类似的方式拆分项目可能是一种解决方案。

关于原生二进制文件。我不得不稍微修改一下速度模板,以便将这些依赖项作为nativelib而不是jar资源。