java - 为什么 Maven 存储库中的库无法编译?

标签 java maven repository

我有一个有趣的任务,从项目存储库编译一些库。

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

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

  3. 我运行“maven clean install”

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

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

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

问题很严重,不仅仅是这个库受到影响。

最佳答案

虽然我不明白您给出的具体错误,但让我声明一下,如果您只有源 jar 和 POM,那么通常不可能重建 jar。

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

因此,您需要习惯这可能有效也可能无效的事实。

通常,人们只是按原样使用 jar 。如果出于某种原因(你没有透露,虽然我问了你两次)你需要从源代码编译,我可以(按这个顺序):

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

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

  3. 不要使用库,而是自己编写您需要的必要内容。

关于java - 为什么 Maven 存储库中的库无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60845635/

相关文章:

java - 确定打开两个文件时找不到哪个文件

java - 告诉低级对象使用哪些工厂的好方法是什么?

Java Gridgain 应用程序在压力测试 1 天后开始失败

Java EE war 部署或重新部署 - 自动选择适当的操作

c# - .Net 2.0 的简单存储库

java - JList setListData 线程问题

xml - maven pom 文件有 html 代码而不是 xml

java - 无法在项目上执行目标 org.codehaus.mojo :exec-maven-plugin:1. 2.1:exec (default-cli):命令执行失败

svn - SVN 的 relocate 是将代码与两个颠覆存储库同步的安全选项吗?

git - 致命的 : Not a git repository (or any of the parent directories): . git