【发布时间】:2023-03-19 11:36:01
【问题描述】:
我正在尝试在 Maven 中运行 Ant 作业以查看文件夹,并根据该文件夹中有多少个文件夹,创建 x 个具有文件夹名称的 zip 文件。我让它手动工作,但如果我不必在每次向这个结构中添加一个新文件夹时都编辑 pom,那就太好了。
<configuration>
<target name="zip">
<zip destfile="root/sub1/sub1.jar">
<zipfileset dir="root/sub1/unpacked/" includes="**" ></zipfileset>
</zip>
</target>
</configuration>
如果我要将 sub2 添加到根目录,我希望它自动被拾取,并创建一个 sub2.jar 文件(是的,我知道我正在使用 .jar,但程序是获取这些文件需要 .jar 文件,但它们不是 jar 文件,因为它们包含任何 Java 代码,它们只是带有 jar 扩展名的 zip 文件)
我试过了
谢谢我看了第一个链接,但也许我做错了
<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>
我刚刚得到
[INFO] --- maven-antrun-plugin:1.7:run (process-javascript-plugin) @war--- [INFO] 执行任务
邮编: [回声] ${theFile} [INFO] 已执行的任务
好像还是不行。
pom.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>
build-main.xml
<?xml version="1.0" encoding="UTF-8" ?>
<project>
<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="**" />
</zip>
<echo message="TESTZIP ${theFile}"/>
</target>
</project>
似乎没有工作。我错过了什么吗?
【问题讨论】:
-
我想到的问题是这样包装的是什么?
-
它只是一个 XML 文件的集合。为什么这样做不是我关心的问题,因为它是我必须使用的内部产品,并且没有改变的发言权,所以我只能顺其自然!使用 ant-jar 会在 META-INF 文件夹中抛出,这就是我不这样做的原因。
-
我可以想象的最简单的解决方案是使用带有适当描述符的 maven-assembly-plugin....
标签: maven ant zip ant-contrib