首页 > 解决方案 > 为什么来自 maven repo 的库无法编译?

问题描述

我有一个有趣的任务是从项目 repo 编译一些库。

  1. 我使用 mvn dependency:sources 获得带有库源的 jar。

  2. 我将 java 文件解压缩到 src/main/java 文件夹。

  3. 我运行“Maven 全新安装”

有些库可以编译,但有些则不能——有些包没有找到,因为它们不在源 jar 中,也不在库 pom.xml 中。为什么图书馆的作者这样做?

例如尝试编译这个库:https ://repo1.maven.org/maven2/edu/ucar/netcdf/4.2/

错误:包 ucar.unidata.util 不存在。我必须在哪里以及如何获得这个包裹?为什么作者不将其包含在 jar 或 pom 文件中?

问题是巨大的,不仅这个库受到影响。

标签: javamavenrepository

解决方案


虽然我不明白您给出的具体错误,但让我声明,如果您只有源 jar 和 POM ,通常无法重建 jar。

很多东西可能会丢失,比如资源、测试和项目结构本身(如果它是一个多模块项目),并且一些 POM 被“扁平化”,因此删除了重要的插件调用等。

因此,您需要习惯这样一个事实,即这可能有效,也可能无效。

通常,人们只是按原样使用罐子。如果由于某些原因(您没有透露,尽管我问过您两次)您需要从源代码编译,我可以(按此顺序):

  1. 查找项目的 github/gitlab 页面(通常在 POM 中给出,或者在 google 中找到)并从那里绘制项目。

  2. 摆弄源代码和 POM,直到您可以编译项目(就像处理任何损坏的项目一样)。这可能会也可能不会成功。

  3. 不要使用库,而是自己编写所需的东西。


推荐阅读