首页 > 解决方案 > 为什么 Eclipse 的“Maven - 更新项目”试图构建部署目标?

问题描述

我有一个已导入 eclipse 的多模块 maven 项目(版本:2019-09 R (4.13.0)),有时我需要执行“Maven -> 更新项目”。不幸的是,这会导致与我正在使用的部署插件相关的 Maven 构建错误。我需要使用备用插件才能将项目的工件部署到 JFrog 的 bintray 存储库。这是我在 Eclipse 控制台窗口中看到的错误示例:

Description Resource    Path    Location    Type
Execution error (com.carrotgarden.maven:bintray-maven-plugin:1.5.20191113165555:deploy:default:deploy)

org.apache.maven.plugin.MojoFailureException: Execution error
    at com.carrotgarden.maven.bintray.BaseExecute.execute(BaseExecute.scala:30)
    at com.carrotgarden.maven.bintray.BaseExecute.execute$(BaseExecute.scala:18)
    at com.carrotgarden.maven.bintray.DeployMojo.execute(DeployMojo.scala:26)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
    at org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:333)
    at org.eclipse.m2e.core.internal.embedder.MavenImpl.lambda$7(MavenImpl.java:1380)

...

Caused by: org.apache.maven.artifact.deployer.ArtifactDeploymentException: Failed to deploy artifacts: Could not transfer artifact com.ibm.cloud:global-catalog:jar:99-20200508.153213-1 from/to bintray (https://bintray.com/api/v1/maven/ibm-cloud-sdks/platform-services-java-sdk/com.ibm.cloud:global-catalog): Failed to transfer https://bintray.com/api/v1/maven/ibm-cloud-sdks/platform-services-java-sdk/com.ibm.cloud:global-catalog/com/ibm/cloud/global-catalog/99-SNAPSHOT/global-catalog-99-20200508.153213-1.jar. Error code 400, Bad Request
    at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:146)
    at org.apache.maven.plugin.deploy.AbstractDeployMojo.deploy(AbstractDeployMojo.java:171)
    at com.carrotgarden.maven.bintray.DeployMojo.protected$deploy(DeployMojo.scala:141)
    at com.carrotgarden.maven.bintray.DeployMojo.$anonfun$executeDeploy$1(DeployMojo.scala:141)
    ... 33 more
Caused by: org.eclipse.aether.deployment.DeploymentException: Failed to deploy artifacts: Could not transfer artifact com.ibm.cloud:global-catalog:jar:99-20200508.153213-1 from/to bintray (https://bintray.com/api/v1/maven/ibm-cloud-sdks/platform-services-java-sdk/com.ibm.cloud:global-catalog): Failed to transfer https://bintray.com/api/v1/maven/ibm-cloud-sdks/platform-services-java-sdk/com.ibm.cloud:global-catalog/com/ibm/cloud/global-catalog/99-SNAPSHOT/global-catalog-99-20200508.153213-1.jar. Error code 400, Bad Request
    at org.eclipse.aether.internal.impl.DefaultDeployer.deploy(DefaultDeployer.java:302)
    at org.eclipse.aether.internal.impl.DefaultDeployer.deploy(DefaultDeployer.java:211)
    ... 40 more
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.ibm.cloud:global-catalog:jar:99-20200508.153213-1 from/to bintray (https://bintray.com/api/v1/maven/ibm-cloud-sdks/platform-services-java-sdk/com.ibm.cloud:global-catalog): Failed to transfer https://bintray.com/api/v1/maven/ibm-cloud-sdks/platform-services-java-sdk/com.ibm.cloud:global-catalog/com/ibm/cloud/global-catalog/99-SNAPSHOT/global-catalog-99-20200508.153213-1.jar. Error code 400, Bad Request
    at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:856)
    at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:1)
    ... 43 more
Caused by: io.takari.aether.connector.TransferException: Failed to transfer https://bintray.com/api/v1/maven/ibm-cloud-sdks/platform-services-java-sdk/com.ibm.cloud:global-catalog/com/ibm/cloud/global-catalog/99-SNAPSHOT/global-catalog-99-20200508.153213-1.jar. Error code 400, Bad Request
    at io.takari.aether.connector.AetherRepositoryConnector.handleResponseCode(AetherRepositoryConnector.java:372)
    at io.takari.aether.connector.AetherRepositoryConnector.access$8(AetherRepositoryConnector.java:362)
    ... 44 more
    pom.xml /public-global-catalog  line 5  Maven Build Problem

错误中引用的模块 pom 文件的第 5 行是模块 pom<parent>部分的开头。我对Failed to deployFailed to transfer错误并不感到惊讶,因为我的本地沙箱中没有必要的凭据来进行实际部署,而且我的项目的快照工件无论如何都不存在于 bintray 存储库中。

我不确定为什么“Maven -> 更新项目”首先尝试构建“部署”目标。我当然不希望它:)
任何人都知道如何防止这种情况发生?我可以配置“Maven -> 更新项目”使用的目标吗?

标签: javaeclipsemavenm2eclipse

解决方案


我从 eclipse m2e 项目的邮件列表中获得了一些帮助。避免我在 Eclipse 中看到的错误的一种方法是添加<?m2e ignore?>到插件的<execution>配置中,如下所示:

<execution>
    <?m2e ignore?>
    <id>bintray-deploy</id>
    <phase>deploy</phase>
    <goals>
        <goal>deploy</goal>
    </goals>
</execution>

这显然告诉 eclipse m2e 插件在更新 eclipse 中的项目配置时简单地忽略这个目标。


推荐阅读