Ant - Zip多个文件夹

时间:2016-03-10 11:46:01

标签: maven ant zip ant-contrib

我试图在Maven中运行Ant作业来查看文件夹,并根据该文件夹中有多少个文件夹,创建带有文件夹名称的x个zip文件。我手动工作,但如果我每次在这个结构中添加新文件夹时都不必编辑pom,那就太好了。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type=text id=I>

如果我要将sub2添加到根目录,我希望它能自动拾取,并创建一个sub2.jar文件(是的,我知道我使用.jar,但是获取这些文件的程序需要.jar文件,但它们不是jar文件,因为它们包含任何Java代码,它们只是带有jar扩展名的zip文件)

我试过这个

谢谢我看了第一个链接,但也许我做错了

<configuration>
    <target name="zip">
        <zip destfile="root/sub1/sub1.jar"> 
        <zipfileset dir="root/sub1/unpacked/" includes="**" ></zipfileset>
        </zip>
    </target>
</configuration>

我得到了

[INFO] --- maven-antrun-plugin:1.7:run(process-javascript-plugin)@war --- [INFO]执行任务

ZIP:      [echo] $ {theFile} [INFO]已执行的任务

似乎仍然无法正常工作。

的pom.xml

<target name="checkDir">
    <foreach target="zip" param="theFile">
        <dirset dir="root" casesensitive="yes">
            <include name="**"/>
        </dirset>
    </foreach>
    </target>
<target name="zip">
<!-- <zip destfile="root/${theFile}/${theFile}.jar"> 
                            <zipfileset dir="root/${theFile}/unpacked/" includes="**" ></zipfileset>
</zip> -->
<echo message="${theFile}"/>
</target>

积main.xml中

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <id>process-cartridges</id>
                        <phase>compile</phase>
                        <configuration>
                        <target>
                           <ant antfile="root/build-main.xml"/>
                        </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

似乎没有效果。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Ant的foreach任务执行此操作,并结合这两个帖子的答案:Ant: How to execute a command for each file in directory?Calling foreach in maven-antrun-plugin

但是,您也可以使用iterator-maven-plugin使用Maven解决方案迭代所有子文件夹,然后使用maven-jar-plugin制作jar:

<plugin>
  <groupId>com.soebes.maven.plugins</groupId>
  <artifactId>iterator-maven-plugin</artifactId>
  <version>0.3</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>iterator</goal>
      </goals>
      <configuration>
        <folder>root/</folder>
        <pluginExecutors>
          <pluginExecutor>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <version>2.6</version>
            </plugin>
            <goal>jar</goal>
            <configuration>
              <classesDirectory>root/@item@/unpacked</classesDirectory>
              <outputDirectory>root/@item@</outputDirectory>
              <finalName>@item@.jar</finalName>
            </configuration>
          </pluginExecutor>
        </pluginExecutors>
      </configuration>
    </execution>
  </executions>
</plugin>

这与package阶段绑定。它将迭代root文件夹的所有直接子文件夹,并使用给定的配置调用jar插件。 @item@用于指代当前目录名称。