我对将Maven用于Java / WebApp项目有很好的理解,但仅限于遵循默认目标/生命周期。

但是,我现在有一个Backup项目,它根本不是Java项目。我正在考虑使用Maven配置它以保持一定的一致性,但是不确定如何为我的定制处理覆盖主要的Maven目标/阶段。

备份项目需要执行以下操作:
'build'-最初,备份输出将是mysql数据库转储文件和从现有WebApp导出的zip。但是我希望它具有灵活性,因此调用ant文件来完成实际工作(创建转储,调用WebApp或将来做任何事情)似乎是明智的。然后可以将输出文件复制到目标目录。

'install'-将输出文件发布到本地存储库,最好提供datetimestamp版本号,而不是通常的1.0.0-SNAPSHOT版本。我想认为Maven可以处理文件集而不是单个jar / war的伪像,但是对此不确定。

我的pom.xml将包装声明为“pom”,因为“jar”和“war”在这里似乎不合适。

然后,我希望其他项目能够依赖此Backup项目,以便在需要时可以获取最新的备份工件。

1)如何覆盖Maven的“编译”目标以调用ant构建文件?

2)如何覆盖Maven的“安装”目标以将所有文件发布到目标目录中,但作为单个工件发布?

任何帮助/指导表示赞赏。

最佳答案

您可以使用maven antrun plugin实现此目的。

一种示例用法:

    <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
            <execution>
                <id>bundle-virgo</id>
                <phase>package</phase>
                <configuration>
                <tasks>
                    <ant antfile="<path to build.xml>" target="compile"/>
                </tasks>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
           </execution>
        </executions>
    </plugin>
</plugins>

您可以将phase参数更改为不同的maven阶段,以在package, compile等不同的阶段运行它。

07-28 03:19
查看更多