我试图在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>
似乎没有效果。我错过了什么吗?
答案 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@
用于指代当前目录名称。