Ant文件中的Exec标记



我使用bash脚本ant ant。我想执行bash脚本内联build.xml文件。我的bash脚本在这里

for f in `cat lg-media-file-list`
do
    subdir=`dirname $f`
    mkdir -p ${destination}$subdir
    cp $f ${destination}${subdir}
done

有人能帮我吗?

Ant是矩阵依赖语言,而Shell脚本是过程语言。矩阵依赖性语言的目的是允许构建描述来确定执行顺序。过程语言允许您定义顺序。

您可以在Ant构建脚本中嵌入一些脚本(通常使用JavaScript),但这主要是为了定义自定义任务。自1.5版本问世以来,我一直在与Ant合作,我已经做了不到12次了。上一次我定义了一个过滤器任务,使文件名小写,因为它们是为WAR复制的。(不要问为什么文件的大小写一开始就不正确)。

你到底想完成什么?这是构建过程的一部分吗?如果是,为什么不简单地使用已经定义的Ant任务来完成这项任务呢?您是否试图将Ant用作过程脚本工具?如果是这样的话,你就是在要求受到很大的伤害。蚂蚁不是天生的。

请给我们更多关于你的情况的信息。你到底想完成什么?你提到我想把代码放在一个地方。你知道函数吗?您可以在BASH中定义函数,并通过.bashrc文件访问它们,就好像它们是shell脚本一样。这样,您的代码将位于的一个位置

然而,在我们知道你想做什么之前,很难弄清楚该建议你做什么。

Bash不支持作为内联脚本,主要是因为它没有在Java中实现。参见

  • 编写任务文档脚本
  • BSF Bean脚本框架

我把你的例子重新编码为groovy:

new File("lg-media-file-list").eachLine {
    def srcFile = new File(it)
    def destDir = new File(properties.destination, srcFile.parent)
    ant.copy(file:srcFile, todir:destDir)
}

以下示例显示了如何将其集成到build.xml 中

示例

├── build.xml
├── lg-media-file-list
├── lib
│   └── groovy-all-2.1.6.jar
├── src
│   ├── file1.txt
│   ├── file2.txt
│   ├── file3.txt
│   ├── file4.txt
│   └── file5.txt
└── target
    └── src
        ├── file1.txt
        ├── file2.txt
        ├── file3.txt
        ├── file4.txt
        └── file5.txt

groovy jar可以从这里下载

build.xml

<project name="demo" default="copy-files">
   <property name="destination" location="target"/>
   <path id="build.path">
      <pathelement location="lib/groovy-all-2.1.6.jar"/>
   </path>
   <target name="copy-files">
      <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
      <groovy>
         new File("lg-media-file-list").eachLine {
            def srcFile = new File(it)
            def destDir = new File(properties.destination, srcFile.parent)
            ant.copy(file:srcFile, todir:destDir)
         }
      </groovy>
   </target>
   <target name="clean">
      <delete dir="${destination}"/>
   </target>
</project>

lg媒体文件列表

src/file1.txt
src/file2.txt
src/file3.txt
src/file4.txt
src/file5.txt

相关内容

  • 没有找到相关文章

最新更新