【问题标题】:Why Maven is looking for .pom file when .jar is present in the repository?当 .jar 存在于存储库中时,为什么 Maven 正在寻找 .pom 文件?
【发布时间】:2011-12-09 08:58:06
【问题描述】:

我的 pom.xml 中有以下依赖项

<dependency>
    <groupId>aGroup</groupId>
    <artifactId>anArtifact</artifactId>
    <version>aVersion</version>
</dependency>

我在~/.m2/repository/aGroup/anArtifact/aVersion 目录中也有anArtifact-aVersion.jar 文件。

当我开始构建项目时,maven 会查找 .pom 文件而不是使用 .jar 文件并尝试下载以下内容

http://repo1.maven.org/maven2/aGroup/anArtifact/aVersion/anArtifact-aVersion.pom

如何配置 maven 以使用现有的 .jar 文件?

【问题讨论】:

  • 您是否将那个 jar 放入本地存储库 (~/.m2/repository)?还是 Maven 下载的?

标签: maven pom.xml


【解决方案1】:

每个 jar 都需要有一个 pom 文件来描述它,你可以像这样添加一些简单的东西:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>aGroup</groupId>
    <artifactId>aArtifactId</artifactId>
    <version>aVersion</version>
    <packaging>jar</packaging>
    <name>a Name</name>
</project>

【讨论】:

  • 这是否意味着在存储库中,jar 旁边应该有这种“.pom”文件,而 jar 文件本身已经有 pom.xml 和 plugin.xml 文件?它应该是其中之一的副本吗?
  • 是的 pom 需要在那里,是的,我可以只是包含 pom 的副本。如果您上传 jar,像 artifactory 这样的本地存储库实际上只是提取包含的 pom。
【解决方案2】:

使用“-o”开关运行您的构建以在离线模式下使用 Maven。在离线模式下,Maven 不会检查远程仓库中快照依赖的更新。

【讨论】:

    【解决方案3】:

    将工件安装到本地存储库的最佳方式不是由 Maven ist 构建以供使用

    mvn install:install-file ...

    看看install:install 目标。

    【讨论】:

      【解决方案4】:

      安装到 nexus 的 POM 将描述 jar。用于拉取与相应 jar 关联的依赖项。当我们将jar作为依赖添加到我们的项目中时,所包含的jar所需的所有jar都会通过对应的pom来识别。

      【讨论】:

        【解决方案5】:

        它正在寻找 pom 来解决传递依赖等问题。

        【讨论】:

          猜你喜欢
          • 2016-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-03
          • 1970-01-01
          • 2014-12-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多