【问题标题】:Custom remote repository being looked up even when jar of dependency component is created in maven local repository during building it即使在构建过程中在 Maven 本地存储库中创建了依赖组件的 jar 时,也会查找自定义远程存储库
【发布时间】:2019-12-05 00:25:48
【问题描述】:

我的 Maven 项目中有一个依赖项和一个依赖组件。

我已经成功创建了依赖项目的jar,使用clean install -

[INFO] Installing /Users/sandeepan.nath/Desktop/codebase/path/to/component1/target/project-component-1-1.0.1-SNAPSHOT.jar to /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/project-component-1-1.0.1-SNAPSHOT.jar
[DEBUG] Writing tracking file /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/_remote.repositories
[INFO] Installing /Users/sandeepan.nath/Desktop/codebase/path/to/project-component-1/pom.xml to /Users/sandeepan.nath/.m2/repository/com/path/to/project-component-1/1.0.1-SNAPSHOT/project-component-1-1.0.1-SNAPSHOT.pom
[DEBUG] Writing tracking file /Users/sandeepan.nath/.m2/repository/path/to-project-component-1/1.0.1-SNAPSHOT/_remote.repositories
[DEBUG] Installing com.project:project-component-1:1.0.1-SNAPSHOT/maven-metadata.xml to /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/maven-metadata-local.xml
[DEBUG] Installing com.project:project-component-1/maven-metadata.xml to /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/maven-metadata-local.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------

我还确认存储库存在于路径中 - /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/

以下是生成的文件的权限-

SandeepanNath:1.0.1-SNAPSHOT sandeepan.nath$ ls -l
total 312
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     264 Jul 26 21:24 _remote.repositories
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users  107794 Jul 26 21:24 project-component-1-1.0.1-SNAPSHOT.jar
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     428 Jul 26 19:19 project-component-1-1.0.1-SNAPSHOT.jar.lastUpdated
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users    6733 Jul 26 21:01 project-component-1-1.0.1-SNAPSHOT.pom
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     428 Jul 26 19:19 project-component-1-1.0.1-SNAPSHOT.pom.lastUpdated
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     739 Jul 26 21:24 maven-metadata-local.xml
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     342 Jul 26 21:26 resolver-status.properties

注意 - 我不确定为什么 jar 不存在于组件的目标目录中。 根据我的理解,依赖组件的 jar 将首先在目标目录中查找项目,然后在 maven 本地存储库中,最后在远程存储库中。

现在,当我尝试在依赖组件上运行 clean install 时,我收到以下错误 -

依赖项目是否试图引用依赖项目的 .m2 或 /target 文件夹?

[ERROR] Failed to execute goal on project project-component-2: Could not resolve dependencies for project project-component-2:jar:1.0.1-SNAPSHOT: Failed to collect dependencies at project-component-1:jar:1.0.1-SNAPSHOT: Failed to read artifact descriptor for project-component-1:jar:1.0.1-SNAPSHOT: Could not find artifact project:path:pom:1.0.1-SNAPSHOT in nexus (https://project-repository.com/repository/maven-public/) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project project-component-2: Could not resolve dependencies for project project-component-2:jar:1.0.1-SNAPSHOT: Failed to collect dependencies at project-component-1:jar:1.0.1-SNAPSHOT
    at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:269)

这个存储库 url 在 maven settings.xml 中定义为 -

<localRepository>/Users/sandeepan.nath/.m2/repository</localRepository>
<servers>

    <server>
        <id>repo-id</id>
        <username>cred</username>
        <password>cred</password>
    </server>
    <server>
        <id>repo-id-2</id>
        <username>cred</username>
        <password>cred</password>
    </server>
    <server>
        <id>repo-id-3</id>
        <username>cred</username>
        <password>cred</password>
    </server>
<server>
        <id>repo-id-4</id>
        <username>cred</username>
        <password>cred</password>
    </server>
    <server>
        <id>repo-id-5</id>
        <username>cred</username>
        <password>cred</password>
    </server>
</servers>


<mirrors>
       <mirror>
      <id>repo</id>
      <mirrorOf>repo-id-5</mirrorOf>
      <url>https://project-repository.com/repository/maven-snapshots</url>
    </mirror>
    <mirror>
      <id>repo-id-4</id>
      <mirrorOf>nexus-snapshots-prepaid</mirrorOf>
      <url>https://project-repository.com/repository/maven-snapshots</url>
    </mirror>
    <mirror>
      <id>repo-id-1</id>
      <mirrorOf>*</mirrorOf>
      <url>https://project-repository.com/repository/maven-public/</url>
    </mirror>
</mirrors>

注意 - 如果我在替换项目的实际名称/路径时犯了任何错误,请忽略。

更新

Maven 版本 3.3.9。 Java 1.8 版。

更新 2

这是依赖组件的 pom 中的一些部分(可能相关) -

<parent>
        <groupId>com.project</groupId>
        <artifactId>project-base</artifactId>
        <version>1.0.1-SNAPSHOT</version>
        <relativePath>../../</relativePath>
    </parent>

    <artifactId>project-component-1</artifactId>
    <packaging>jar</packaging>

    <name>project-component-1</name>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.project.dependencies</groupId>
                <artifactId>dependency-of-project-component-1</artifactId>
                <version>1.0-SNAPSHOT</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

更新 3

我之前尝试过更新快照配置 -

我也尝试了mvn clean install -U,但结果相同。

更新 4

根据此评论 -

我猜你的本地存储库有问题。删除 目录 /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/ 然后再次构建第一个工件。

也试过了,但还是一样的错误。在删除 1.0.1-SNAPSHOT 目录并构建第一个工件时,该目录再次出现,只有 .jar 文件。我想,早些时候 .lastUpdated 文件也在那里。但是,尝试构建第二个工件时的错误仍然相同。

【问题讨论】:

    标签: java maven spring-boot maven-dependency


    【解决方案1】:

    您需要使用-U 调用clean install,因为您的本地存储库中有lastUpdated 文件。这些缓存表明工件不存在。

    【讨论】:

    • 我已经在做clean install 并检查了更新快照。不确定这是否在做需要的事情。无论如何,我也尝试使用 -U,但仍然遇到同样的错误。
    • -U 应该尝试从远程存储库下载吗?我不确定这些项目组件 jar 是否会出现在远程存储库中。我希望这些将在我的项目目标文件夹中创建,但这些正在本地存储库中创建。
    • 那我猜你的本地仓库有问题。删除目录/Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/,然后重新构建第一个工件。
    • 也试过了,但仍然是同样的错误。在删除 1.0.1-SNAPSHOT 目录并构建第一个工件时,该目录再次出现,只有 .jar 文件。我猜,之前的 .lastUpdated 文件也在那里。但是,尝试构建第二个工件时的错误仍然相同。
    • 在尝试构建第二个工件后,您是否再次获得相同的 lastupdated 文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2012-02-02
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多