在我正在处理的项目中,有一个扩展依赖项在公共 Maven 工件索引上不可用,但有一个包含项目代码的公共存储库。该项目是使用ant
原生构建的。
我们计划做的是自动下载依赖代码,为其提供POM文件,然后将其构建为基于Maven的大项目的一部分。
到目前为止,我已经设法创建了一个使用maven-ant-plugin
编译依赖项的 POM 文件,但我无法将项目安装到本地 Maven 存储库中,mvn install
跳过了使用 ant 编译的 jar 和类,只安装了一个空的虚拟 jar。
到目前为止,谷歌搜索没有给出任何结果,每个人都建议重新排列代码以适应默认的 maven 目录结构并使用 maven 构建它,但这会使从上游更新依赖项变得不可能,因为那样我将不得不在新的上游版本发布时再次重新排列文件。
目标是拥有一个POM文件,我可以将其放入ant项目的根目录中,更新版本号,并进行mvn安装,并使编译的jar在本地maven存储库中可用。
如何让 maven 识别 ant 编译的 jar 或 ant 编译的类?
我建议你使用install:install-file
目标。
它允许您明确说明应该安装哪个 jar 和哪个 POM。
我曾经以同样的方式做过:添加一个POM,它首先通过Ant构建所有内容,然后调用生成的工件的install-file
目标。
最佳做法是:
- 尝试联系项目并要求他们将库发布到 Maven Central(例如使用 Ant Ivy(
- 如果这是不可能的/过程变慢,请使用您选择的一些坐标(groupId,artifactId,版本(在Maven存储库管理器(例如Nexus(中托管库,并且不太可能与Maven Central上发布的坐标冲突