缺少项目的 POM,没有可用的依赖项信息背景问题想法问题相关

2022-08-31 21:04:34

背景

尝试使用全新安装的 Apache Maven 3.1.0 和 Java 1.7 将 Java 库添加到本地 Maven 存储库。以下是添加 Java 归档文件的方式:

mvn install:install-file \
  -DgroupId=net.sourceforge.ant4x \
  -DartifactId=ant4x \
  -Dversion=0.3.0 \
  -Dfile=ant4x-0.3.0.jar \
  -Dpackaging=jar

这创建了以下目录结构:

$HOME/.m2/repository/net/sourceforge/ant4x/
├── 0.3.0
│   ├── ant4x-0.3.0.jar.lastUpdated
│   └── ant4x-0.3.0.pom.lastUpdated
└── ant4x
    ├── 0.3.0
    │   ├── ant4x-0.3.0.jar
    │   ├── ant4x-0.3.0.pom
    │   └── _remote.repositories
    └── maven-metadata-local.xml

项目的文件引用依赖项目(上面的树),如下所示:pom.xml

<properties>
  <java-version>1.5</java-version>
  <net.sourceforge.ant4x-version>0.3.0</net.sourceforge.ant4x-version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<dependency>
  <groupId>net.sourceforge</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

问题

运行 后,返回以下错误(在 Pastebin 上完全登录):mvn compile

[ERROR] Failed to execute goal on project ant4docbook: Could not resolve dependencies for project net.sourceforge:ant4docbook:jar:0.6-SNAPSHOT: Failure to find net.sourceforge:ant4x:jar:0.3.0 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]

该文件指出了可能存在的一些问题,但这些问题似乎都不适用。

想法

根据文档,我尝试了以下操作:

  1. 将 Maven 的默认设置复制到用户的主目录:
    cp /opt/apache-maven-3.1.0/conf/settings.xml $HOME/.m2/.
  2. 编辑用户的设置.xml文件。
  3. 更新本地存储库的值:
    ${user.home}/.m2/repository
  4. 保存文件。

我还尝试了以下命令:

mvn -U
mvn clear -U

我尝试使用Maven 3.0.5,但这也失败了。

问题

你如何强迫Maven使用本地版本的库,而不是试图寻找一个尚未下载的库?

相关

未解决问题的相关问题和信息:


答案 1

改变:

<!-- ANT4X -->
<dependency>
  <groupId>net.sourceforge</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

自:

<!-- ANT4X -->
<dependency>
  <groupId>net.sourceforge.ant4x</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

的 不正确。正确的值为 。groupIdnet.sourceforgenet.sourceforge.ant4x


答案 2

该作用域使你有机会告知该 jar 在运行时可用,因此不要将其捆绑在一起。这并不意味着您在编译时不需要它,因此maven会尝试下载它。<scope>provided</scope>

现在我认为,下面的maven工件根本不存在。我尝试搜索谷歌,但无法找到。因此,您会遇到此问题。

更改为 以获取最新的罐子。groupId<groupId>net.sourceforge.ant4x</groupId>

<dependency>
  <groupId>net.sourceforge.ant4x</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

此问题的另一个解决方案是:

  1. 运行您自己的专家存储库。
  2. 下载罐子
  3. 将 jar 安装到存储库中。
  4. 在 pom 中添加一个代码.xml如下所示:

其中 http://localhost/repo 是本地存储库 URL:

<repositories>
    <repository>
        <id>wmc-central</id>
        <url>http://localhost/repo</url>
    </repository>
    <-- Other repository config ... -->
</repositories>

推荐