【问题标题】:Failed to deploy artifacts: Could not find artifact未能部署工件:找不到工件
【发布时间】:2024-05-04 03:55:02
【问题描述】:

我想将一个库部署到我公司的远程存储库。

这是我第一次想将库项目部署到远程存储库。

我收到以下错误消息:

org.sonatype.aether.transfer.ArtifactNotFoundException:在 internal.repo (http://jenkins.internal.com/) 中找不到工件 com.http:httpkit:jar:0.0.1

也许我理解一些完全错误的东西,但错误消息说,在远程存储库中不存在我第一次尝试部署的工件。所以当然没有这样的神器。为什么当我尝试上传工件时,maven 会尝试获取工件?

我的 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.0http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>com.http</groupId>
<artifactId>httpkit</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>httpkit</name>

<properties>
    <platform.version> 4.1.1.4</platform.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>${platform.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<!-- Deploy to internal maven repository -->
<distributionManagement>
    <repository>
      <id>internal.repo</id>
      <name>Internal Repository</name>
      <url>http://jenkins.internal.com/</url>
    </repository>
</distributionManagement>

<build>
    <plugins>
        <plugin>
            <groupId>com.jayway.maven.plugins.android.generation2</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <version>3.5.3</version>
            <configuration>
                <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
                <assetsDirectory>${project.basedir}/assets</assetsDirectory>
                <resourceDirectory>${project.basedir}/res</resourceDirectory>
                <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory>
                <sdk>
                    <platform>16</platform>
                </sdk>
               <undeployBeforeDeploy>true</undeployBeforeDeploy>
            </configuration>
            <extensions>true</extensions>
        </plugin>

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>

    </plugins>
</build>
</project>

我打电话

mvn 部署

从命令行

有什么建议可以解决这个问题吗?

编辑:失败日志(运行mvn deploy -X

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project httpkit: Failed to deploy artifacts: Could not find artifact com.http:httpkit:jar:0.0.1 in internal.repo (http://jenkins.internal.com) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project httpkit: Failed to deploy artifacts: Could not find artifact com.http:httpkit:jar:0.0.1 in internal.repo (http://jenkins.internal.com)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to deploy artifacts: Could not find artifact com.http:httpkit:jar:0.0.1 in internal.repo (http://jenkins.internal.com)
    at org.apache.maven.plugin.deploy.DeployMojo.execute(DeployMojo.java:193)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: org.apache.maven.artifact.deployer.ArtifactDeploymentException: Failed to deploy artifacts: Could not find artifact com.http:httpkit:jar:0.0.1 in internal.repo (http://jenkins.internal.com)
    at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:141)
    at org.apache.maven.plugin.deploy.AbstractDeployMojo.deploy(AbstractDeployMojo.java:167)
    at org.apache.maven.plugin.deploy.DeployMojo.execute(DeployMojo.java:157)
    ... 21 more
Caused by: org.sonatype.aether.deployment.DeploymentException: Failed to deploy artifacts: Could not find artifact com.http:httpkit:jar:0.0.1 in internal.repo (http://jenkins.internal.com)
    at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:280)
    at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:211)
    at org.sonatype.aether.impl.internal.DefaultRepositorySystem.deploy(DefaultRepositorySystem.java:443)
    at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:137)
    ... 23 more
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact com.http:httpkit:jar:0.0.1 in internal.repo (http://jenkins.internal.com/)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:947)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:941)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$PutTask.run(WagonRepositoryConnector.java:837)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector.put(WagonRepositoryConnector.java:467)
    at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:274)
    ... 26 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

【问题讨论】:

  • 您试图从失败的构建中运行什么目标?您能否按原样发布构建日志的最后几行?
  • 嗨,目标是 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy)。我已经添加了错误堆栈跟踪。
  • 发布您的整个pom.xmlsettings.xml 文件。 Maven 不是试图下载项目的实际 jar,而是——如果有一个 .pom 文件已经部署到远程主机。这是哪个版本的Maven?您正在使用哪个工件存储库(Nexus、Artifactory、Archiva)?您是否设置了具有适当权限的用户?

标签: maven artifactnotfoundexception


【解决方案1】:

您是否尝试在 settings.xml 文件中添加服务器?默认设置 xml 位于您的 ~/.m2/ 目录中。应该包含类似的内容:

<servers>
        <server>
            <id>my-internal-nexus-repo</id>
            <username>yourUserName</username>
            <password>yourPassword</password>
        </server>
</servers>

这里是http://maven.apache.org/settings.html maven 文档的链接,用于添加服务器。

另一件事可能是在黑暗中开枪。我注意到您正在尝试连接到 url 建议的可能是 Jenkins 实例的内容。 Jenkins 是一个持续集成服务器,对我来说似乎很奇怪你在那里找到你的存储库。我希望有一个 Nexus 网址或其他东西。

【讨论】:

  • 是的,你是对的。我推理有误。 Jenkins 有一个 maven 存储库插件,但想法不是部署到那个插件,就像我对 nexus 所做的那样(我认为这个插件是这样工作的),而是让 jenkins 构建项目并将工件添加到 jenkins 本地 maven存储库。那么我们的开发人员就可以使用 jenkins 本地 maven 存储库作为远程存储库了 :)
  • 这是错误的。 id 应该与 pom 中的 id 相同,因此 internal.repo 而不是 url
  • @ManfredMoser 是的,你是对的,不应该是 repo 的 url,而是你命名的 thingy 的名称,例如 maven-central
  • 我已将 settings.xml 添加到我的项目文件夹中。现在我知道 settings.xml 属于 C:/Users/YourUsername/.m2
  • 所以我的 settings.xml 中有这个服务器块,但仍然得到这个工件未找到错误。为什么 Maven 正在寻找一个显然不应该存在的工件,因为我刚刚第一次上传它?这根本没有意义。
【解决方案2】:

(添加一个较晚的答案,希望它可以帮助那些在谷歌上寻求帮助的人......)

我也有这个问题。在拉了很多(很多)头发之后,我意识到我只是拼错了存储库名称!

所以使用 OP 的例子:

Failed to deploy artifacts: Could not find artifact com.http:httpkit:jar:0.0.1 in internal.
repo (http://jenkins.intrnal.com)

可能实际上意味着

Failed to deploy artifacts: Could not find internal.repo (http://jenkins.intrnal.com)

【讨论】:

  • 多么及时的回答。我今天刚刚遇到了这个确切的错误,这确实是 repo URL 中的一个错字!
  • 我有同样的错误,在我的情况下,主机位于代理后面,我需要将主机添加到 settings.xml 中的 nonProxyHosts,maven 不使用操作系统代理设置, 特别是 Linux 上的 no_proxy 环境变量
  • 我犯了同样的错误。非常感谢。
【解决方案3】:

我遇到了类似的问题并解决了

  1. 在 settings.xml 中将我的 nexus 服务器添加为 nonProxyHost
  2. 将第 3 方的存储库策略设置为发布而不是 快照。

在我的* answer 中查看更多详细信息。

请注意,我正在执行“mvn deploy:deploy-file”(将第 3 方工件上传到共享存储库),而您正在执行“mvn deploy”(将您的工件从构建项目上传到共享存储库),但根本原因可能相同。

【讨论】:

    【解决方案4】:

    我们遇到了这个问题。几个小时后,我们认为这是内部存储库中的磁盘空间问题。

    【讨论】:

    • 是的,完全一样。谢谢。
    【解决方案5】:

    在我的情况下,我在 pom.xml 的 snapshotRepository 部分中的服务器 url 指向 http,而我的内部存储库托管在 https 中。

    【讨论】:

      【解决方案6】:

      关于错误:

      Failed to deploy artifacts: Could not transfer artifact
      

      解决方案:

      解决此问题的一个非常简单的方法是更改​​/更新pom.xml 文件中的版本。假设 01.16.03 已被使用,然后尝试改用 01.16.04。它应该可以工作。

      【讨论】:

        【解决方案7】:

        好的...几天前我遇到了同样的问题。 在摆弄了各种排列组合之后,我终于得出了结论。 那些说反应堆自动排序和解决所有依赖关系的人是不正确的。似乎下面的链接描述了这一切。请看“反应堆排序”部分下的最后一点:

        https://maven.apache.org/guides/mini/guide-multiple-modules.html#Reactor_Sorting

        它建议在没有其他规则适用的情况下考虑定义模块的顺序。

        我希望这对其他人有所帮助。 :)

        【讨论】:

          【解决方案8】:

          这是因为您的 Maven 无法找到设置文件。如果删除 .m2 不起作用,请尝试以下解决方案

          转到您的 JOB 配置

          比构建部分

          添加构建步骤:- 调用* maven 目标并填写 Maven 版本和目标

          点击高级按钮并在图片中提及 settings 文件路径

          【讨论】: