1

我一直在使用宏定义将一组文件复制到不同的位置和 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}"/>
4

5 回答 5

1

如果你不拘泥于7z,那么你可以使用Zip Task

你可以试试这样的东西,而不是<copy></copy......

<zip destfile ="@{destfile}">
  <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>
</zip>

<copyimages destfile="${publish.ssdoci.file}-${env.version}.${build.number}"/>
于 2011-01-19T09:53:21.450 回答
1

7zip 没有任务 - 并且 <zip> 无法使用密码存档。因此,我的解决方案是

<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>
于 2012-06-29T07:40:40.353 回答
0

我想使用带有“exec”的 7z.exe 是最好的选择。

这是语法:

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

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

干杯!

于 2011-01-20T08:22:11.263 回答
0

这里有一个 7z ant 任务:http ://www.pharmasoft.be/7z/

但是,没有对其进行测试,并且该站点似乎已经过时了。

于 2012-10-23T08:33:48.310 回答
0

根据apache.org 有对 7z 的支持。
来自osdir.com有关于实现sevenz任务的评论,其工作方式与使用 zip 的方式相同

使用行家?

<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>

在蚂蚁

<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" />
于 2014-08-09T01:21:19.980 回答