java - 为什么 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 deploy
和Failed to transfer
错误并不感到惊讶,因为我的本地沙箱中没有必要的凭据来进行实际部署,而且我的项目的快照工件无论如何都不存在于 bintray 存储库中。
我不确定为什么“Maven -> 更新项目”首先尝试构建“部署”目标。我当然不希望它:)
任何人都知道如何防止这种情况发生?我可以配置“Maven -> 更新项目”使用的目标吗?
解决方案
我从 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 中的项目配置时简单地忽略这个目标。