仅复制ant中不存在的文件

时间:2009-11-30 00:26:32

标签: java ant copy java-web-start

我正在将我的项目部署到要使用java Web Start部署的Web服务器。但是,Web Start使用修改日期来确定是否再次下载资源(默认情况下)。

我想要的是一种只部署那些尚不存在的(jar)文件的方法。这可以通过在我的所有罐子上都有构建版本号来实现,因此2个同名的罐子具有相同的内容

注意:

  • 由于从svn或ivy下载,jar修改日期在构建中总是更新(这就是我遇到此问题的原因)
  • 有一种方法可以使用sun的下载servlet,更多文件等来实现这一点,但我很懒,不需要它,而且这种(更简单的)解决方案从长远来看会更加强大

4 个答案:

答案 0 :(得分:14)

如果您正在使用蚂蚁复制任务(您没有明确说出自己),您可以尝试present选择器:http://ant.apache.org/manual/Types/selectors.html#presentselect

<copy todir="target">
  <fileset dir="src">
    <present targetdir="target" present="srconly" />
  </fileset>
</copy>

答案 1 :(得分:2)

您可以尝试将granularity attribute设置得非常非常高,基本上禁用“如果源文件比目标更新,则复制具有相同名称的文件”功能。

答案 2 :(得分:0)

我们遇到了类似的问题,我最终实现了自己的jar任务来完成我需要的工作。 Ant源代码是一个很好的起点;如果你很幸运,你可能只能继承Ant的jar任务。它听起来并不像听起来那么困难,而且比我尝试或考虑过的六种解决方法要简单得多。

答案 3 :(得分:0)

我们用maven和JavaFX and WebStart Plugin解决了这个问题,它将maven布局和版本保留在JNLP中,使用“非唯一”SNAPSHOT将保持相同的jar(忽略时间戳)。

我知道这是maven对你不好,但是有人可以尝试一下吗?