如何用Maven打包一个Ant项目?

How to package an Ant project with Maven?

在我正在处理的项目中,有一个在 public Maven 工件索引上不可用的外部依赖项,但是有一个包含项目代码的 public 存储库。该项目是使用 ant.

本机构建的

我们打算做的是自动下载依赖代码,为它提供一个 POM 文件,然后将其构建为我们基于 Maven 的大项目的一部分。

到目前为止,我已经成功地创建了一个使用 maven-ant-plugin 编译依赖项的 POM 文件,但是我无法将项目安装到本地 Maven 存储库中,mvn install 跳过了 jar 类 使用 ant 编译,只安装一个空的虚拟 jar。

谷歌搜索到目前为止没有结果,每个人都建议重新排列代码以适应默认的 maven 目录结构并使用 maven 构建它,但这将使从上游更新依赖项变得不可能,因为那样我将不得不重新排列当新的上游版本发布时,这些文件会再次出现。

目标是拥有一个 POM 文件,我可以将其放入 ant 项目的根目录,更新版本号,然后执行 mvn install 并在本地 maven 存储库中提供编译后的 jar。

如何让maven识别ant编译的jar或者ant编译的类?

我建议您使用 install:install-file 目标。

它允许您明确说明应安装哪个 jar 和哪个 POM。

我曾经以完全相同的方式做到过:添加了一个 POM,它首先通过 Ant 构建所有内容,然后为生成的工件调用 install-file 目标。

最佳做法是:

  1. 尝试联系项目并要求他们将库发布到 Maven Central(例如使用 Ant Ivy
  2. 如果这不可能/过程很慢,请使用您选择的一些坐标(groupId、artifactId、version)在您的 Maven Repository Manager (such as Nexus) 中托管库,并且不太可能与 Maven Central 上发布的坐标发生冲突