版本下载协议文章是关于加快检查资源是否为最新的。尽管它也可能有用,但它并不是阻止重新下载相同文件的部分。
Webstart-maven-plugin 可以为您处理 jar 的版本控制,并且他们声明它们也使用版本协议。见http://www.mojohaus.org/webstart/webstart-maven-plugin/jnlp-mojo.html#outputJarVersions
我的个人经历与文档所说的不同。它在生成的 jnlp 中添加了 jar 的 version 属性,并且没有设置jnlp.versionEnabled
属性,这似乎是版本下载协议所必需的。无论哪种方式,JWS 都能像我预期的那样工作——当文件的版本没有改变时,不会重新下载文件。
插件设置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<version>1.0-beta-6</version>
<dependencies>
<!--This dependency definition resolves class loading issue on Java 8 -->
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>keytool-api-1.7</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>jnlp-download-servlet</goal>
</goals>
</execution>
</executions>
<configuration>
<outputDirectoryName>/</outputDirectoryName>
<libPath/>
<sign>
<keystore>${basedir}/foo-key-store.jks</keystore>
<storepass>password</storepass>
<alias>foo-self-signed</alias>
<verify>true</verify>
</sign>
<unsign>true</unsign>
<jnlpFiles>
<jnlpFile>
<inputTemplate>template.vm</inputTemplate>
<outputFilename>foo.jnlp</outputFilename>
<jarResources>
<jarResource>
<groupId>foo.bar</groupId>
<artifactId>foo</artifactId>
<version>${project.version}</version>
<mainClass>foo.bar.Foo</mainClass>
<outputJarVersion>false</outputJarVersion>
</jarResource>
</jarResources>
</jnlpFile>
</jnlpFiles>
<gzip>true</gzip>
</configuration>
</plugin>
生成的 foo.jnlp 的摘录显示了依赖项的版本属性:
<jar href="commons-collections.jar" version="3.2.1"/>
它引用的文件名为:
commons-collections-3.2.1.jar