使用Maven2,我如何在资源中压缩目录?

时间:2010-05-07 13:37:31

标签: maven-2 ant

我正在尝试将我的项目从使用Maven 1升级到Maven 2,但我遇到了其中一个目标的问题。我的maven.xml文件中有以下Maven 1目标:

<goal name="jar:init">
    <ant:delete file="${basedir}/src/installpack.zip"/>
    <ant:zip destfile="${basedir}/src/installpack.zip"
             basedir="${basedir}/src/installpack" />

    <copy todir="${destination.location}">
        <fileset dir="${source.location}">
            <exclude name="installpack/**"/>
        </fileset>
    </copy>
</goal>

然而,我无法在Maven2中找到这样做的方法。

现在,installpack目录位于我的标准Maven2目录结构的资源目录中,因为它只是被复制,所以效果很好。我需要把它拉上拉链。

我在创建ant插件时找到了这个页面:http://maven.apache.org/guides/plugin/guide-ant-plugin-development.html

看起来我可以创建自己的ant插件来完成我需要的操作。我只是想知道是否有办法只使用Maven2。

我们非常感谢任何建议。

谢谢, B.J。

1 个答案:

答案 0 :(得分:2)

您无需创建ant插件,在打包之前使用Maven Antrun Plugin和Ant任务压缩目标下的installpack目录。在你的pom中声明这样的插件:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase> <!-- a lifecycle phase --> </phase>
            <configuration>
              <tasks>

                <!--
                  Place any Ant task here. You can add anything
                  you can add between <target> and </target> in a
                  build.xml.
                -->

              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

如文档所述,将您的ant任务放在<tasks>元素中并将插件绑定到lifecycle phase,也许prepare-package阶段(我猜jar:init在打包之前被调用)。