【问题标题】:Maven, error copying a file with antrunMaven,使用antrun复制文件时出错
【发布时间】:2013-10-21 16:49:38
【问题描述】:

我在使用 Maven 复制文件时遇到了一些问题。

我是这样使用antrun插件的:(我想把文件jdk1.5.0_22.tgz复制到一个临时文件夹中)

<exec executable="cp">
    <arg value="${parent.resources}/jdk1.5.0_22.tgz" />
    <arg value="${iso.tempDir}/"/>
</exec>

而且效果很好。 现在我做一个小改动,独立于jdk文件版本:(我只把jdk1.5.0_22.tgz改成jdk*.*)

<exec executable="cp">
    <arg value="${parent.resources}/jdk*.*" />
    <arg value="${iso.tempDir}/"/>
</exec>

在这种情况下,我有以下错误: [exec] /bin/cp: 无法统计 '../../resources/jdk*.*': 没有这样的文件或目录

为什么?

【问题讨论】:

  • 您为什么要这样做?通过 Maven 进行这种复制的目的是什么?
  • 我需要创建包含我项目的所有模块以及安装项目本身所需的 jdk 的 ad iso 图像。

标签: java linux maven maven-antrun-plugin


【解决方案1】:

这似乎不是 Maven 问题。

这几乎不是一个蚂蚁问题。

使用jdk*.*,您期望shell 执行通配符扩展。但是,这一切都不是由 shell 执行的,而是由 Ant 执行的。 Ant 不做通配符扩展,而是将包含通配符的原始字符串传递给cpcp 也不做通配符扩展,而是按字面解释。

作为解决方案,我建议您使用 Ant 的fileset 来查找文件。当您使用它时,Ant 的 copy 可能会进行复制,这将与平台无关(比使用 cp 好得多)。

【讨论】:

  • 我之前用过ant的copy,可惜在Linux下它不维护文件权限所以只好改执行cp了。
  • 这并没有改变您应该让 Ant 迭代文件(实际上只有一个),而不是让通配符被 shell 扩展的事实......那不存在。
猜你喜欢
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多