Включение 7z в macrodef в ANT - PullRequest
       33

Включение 7z в macrodef в ANT

0 голосов
/ 18 января 2011

Я использую определение макроса для копирования набора файлов в разные места и на 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}"/>

Ответы [ 5 ]

1 голос
/ 29 июня 2012

Для 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>
1 голос
/ 19 января 2011

Если вы не особо разбираетесь в 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}"/>
0 голосов
/ 09 августа 2014

Согласно apache.org есть поддержка 7z.
На osdir.com есть комментарии по реализации задачи 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>

В муравье

<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" />
0 голосов
/ 23 октября 2012

Здесь доступно муравейное задание 7z: http://www.pharmasoft.be/7z/

Однако его не проверяли, и сайт кажется уже устаревшим.

0 голосов
/ 20 января 2011

Я думаю, использование 7z.exe с "exec" - лучший вариант.

Вот синтаксис:

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

* эта команда помещает весь текстовый файл из c: \ temp в архив "test.7z"

Ура!

...