将Maven用于非Java项目(覆盖清理/编译/安装目标)

shu*_*tsy 3 java ant maven

我对使用Maven for Java/WebApp项目有一个很好的(ish)理解,但仅限于遵循默认目标/生命周期.

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

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

'install' - 将输出文件发布到本地存储库,最好提供datetimestamp版本号,而不是通常的1.0.0-SNAPSHOT版本.我想Maven可以处理一个文件集合,而不是一个罐子/战争,但对此不确定.

我的pom.xml声明包装为'pom'为'jar',而'war'在这里似乎不合适.

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

1)如何覆盖maven'compile'目标来调用ant构建文件?

2)如何覆盖maven'install'目标以发布目标目录中的所有文件,但作为单个人工制品?

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

Ank*_*mar 5

你可以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>
Run Code Online (Sandbox Code Playgroud)

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