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