Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ANT的macrodef中加入7z_Ant_Macrodef - Fatal编程技术网

在ANT的macrodef中加入7z

在ANT的macrodef中加入7z,ant,macrodef,Ant,Macrodef,我一直在使用宏定义将一组文件复制到不同的位置和FTP服务器。但是复制看起来相当慢,所以我想使用7z压缩包,并将所有文件作为一个文件复制到FTP中。可以用7z来完成吗?我的amcrodef如下所示: <macrodef name="copyimages"> <attribute name="todir"/> <sequential> <copy todir="@{todir}" overwrite="true" failonerror="f

我一直在使用宏定义将一组文件复制到不同的位置和FTP服务器。但是复制看起来相当慢,所以我想使用7z压缩包,并将所有文件作为一个文件复制到FTP中。可以用7z来完成吗?我的amcrodef如下所示:

<macrodef name="copyimages">
  <attribute name="todir"/>
  <sequential>
    <copy todir="@{todir}" overwrite="true" failonerror="false">
      <fileset dir="${build.output.dir}">
                  <include name="logs/*${build.id}*armv5*scan2.html"/>
                  <include name="logs/*${build.id}*main.ant.log"/>
        <include name="logs/*${build.id}*bom.xml"/>
        <include name="logs/compile/*${build.id}*.*"/>
        <include name="logs/cone/*${build.id}*.*"/>
        <include name="logs/post/*${build.id}*.*"/>
        <include name="logs/roms/*${build.id}*.*"/>
        <include name="**/*${build.id}_codescanner/**"/>
      </fileset>
    </copy>
  </sequential>
</macrodef>


<copyimages todir="${publish.ssdoci.dir}/${env.version}.${build.number}"/>

如果您对
7z
不太挑剔,则可以使用

您可以尝试这样的方法,而不是使用带有“exec”的7z.exe

以下是语法:

C:\Program Files\7-Zip>7z.exe a-t7z C:\temp\test.7z C:\temp*.txt

*此命令将c:\temp中的所有.txt文件放入存档“test.7z”


干杯

7zip没有任务-无法使用密码存档。 因此,我的解决办法是

<target name="zip" depends="dist">
    <exec executable="C:\Program Files\7-Zip\7z.exe">
        <arg value="a" />                         <!--archive-->
        <arg value="-pMyPasswordt" />             <!-- password -->
        <arg value="-r" />                        <!-- recursiv -->
        <arg value="C:\temp\2012-06-29\${programName}.zip" />  <!-- destination -->
        <arg value="${jarFile}" />                <!-- files to archive -->
    </exec>
</target>

这里有一个7z ant任务:

虽然没有测试它,但该网站似乎已经有点过时了。

根据对7z的支持来看。
这里有一些关于实现
sevenz
任务的评论,这些任务的工作方式与使用zip的方式相同

使用maven

<artifactId>maven-antrun-plugin</artifactId>
<dependencies>
  <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.8</version>
  </dependency>
  <dependency>
    <groupId>org.apache.ant</groupId>
    <artifactId>ant-compress</artifactId>
    <version>1.4</version>
  </dependency>
maven-antrun插件
org.apache.commons
公用压缩
1.8
org.apache.ant
蚂蚁压缩
1.4
蚂蚁

<taskdef resource="org/apache/ant/compress/antlib.xml" classpathref="maven.plugin.classpath"/>
<sevenz destfile ="my.7z">
  <fileset dir="${build.output.dir}">
    <include name="logs/*${build.id}*armv5*scan2.html"/>
    <include name="logs/*${build.id}*main.ant.log"/>
    <include name="logs/*${build.id}*bom.xml"/>
    <include name="logs/compile/*${build.id}*.*"/>
    <include name="logs/cone/*${build.id}*.*"/>
    <include name="logs/post/*${build.id}*.*"/>
    <include name="logs/roms/*${build.id}*.*"/>
    <include name="**/*${build.id}_codescanner/**"/>
  </fileset>
</sevenz>
<un7z src="my.7z" dest="unpack" />


您知道上面宏的ZIP语法吗?@user579910。用示例语法更新了答案。
<taskdef resource="org/apache/ant/compress/antlib.xml" classpathref="maven.plugin.classpath"/>
<sevenz destfile ="my.7z">
  <fileset dir="${build.output.dir}">
    <include name="logs/*${build.id}*armv5*scan2.html"/>
    <include name="logs/*${build.id}*main.ant.log"/>
    <include name="logs/*${build.id}*bom.xml"/>
    <include name="logs/compile/*${build.id}*.*"/>
    <include name="logs/cone/*${build.id}*.*"/>
    <include name="logs/post/*${build.id}*.*"/>
    <include name="logs/roms/*${build.id}*.*"/>
    <include name="**/*${build.id}_codescanner/**"/>
  </fileset>
</sevenz>
<un7z src="my.7z" dest="unpack" />