使用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>
...但理想情况下,我不想在每次向项目添加运行时依赖项时都记得改变它。
有没有办法指示插件包含所有运行时依赖项?
答案 0 :(得分:1)
事实证明,默认情况下包括所有编译和运行时依赖项。
发生了什么事?
好吧,我也使用ant将jnlp部署到服务器上,在ant文件中,使用$dependencies
设置mvn:dependencies
,而不将范围指定为运行时。因此,添加范围会更改合并到jnlp文件中的$dependencies
文件集。
答案 1 :(得分:0)
我使用父pom配置,其中一个模块是Web启动项目。我希望尽可能减少这一点。我只将依赖项编译为日志库,主应用程序模块(同一父pom结构中的另一个模块),以及包含本机二进制文件的jar文件。除了这些编译依赖项之外,我还有一些测试依赖项和对本地javaws.jar文件的系统依赖性。
maven webstart插件似乎包含来自模块的任何运行时依赖项,这些模块作为编译依赖项包含在Web Start项目中。 对于您来说,以类似的方式拆分项目可能是一种解决方案。
关于原生二进制文件。我不得不稍微修改一下速度模板,以便将这些依赖项作为nativelib而不是jar资源。