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