Maven 嵌入式部署不适用于 org.apache.httpcomponents.httpclient 版本 4.4

标签 maven apache-httpclient-4.x maven-deploy-plugin maven-embedder

在我的应用程序中,我必须以编程方式 (mvn) 部署 Artifact 。我在 maven-embedder Artifact 和一些非常简单的代码的帮助下完成了这项工作:

MavenCli client = new MavenCli();
int result = client.doMain(new String[] { "deploy" }, "C:/some/path/to/my/pom", System.out, System.out);

为了能够做到这一点,我必须在我的 pom 中添加以下依赖项:

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-embedder</artifactId>
  <version>3.2.5</version>
</dependency>
<dependency>
  <groupId>org.eclipse.aether</groupId>
  <artifactId>aether-connector-basic</artifactId>
  <version>1.0.2.v20150114</version>
</dependency>
<dependency>
  <groupId>org.eclipse.aether</groupId>
  <artifactId>aether-transport-wagon</artifactId>
  <version>1.0.2.v20150114</version>
</dependency>
<dependency>
  <groupId>org.apache.maven.wagon</groupId>
  <artifactId>wagon-http</artifactId>
  <version>2.8</version>
</dependency>
<dependency>
  <groupId>org.apache.maven.wagon</groupId>
  <artifactId>wagon-provider-api</artifactId>
  <version>2.8</version>
</dependency>
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.3</version>
</dependency>

问题是,当我将 httpclient 的版本更改为 4.4 版(最新版本)时,我在尝试部署时遇到以下错误:

4840 [main] WARN Sisu  - Error injecting:   org.apache.maven.wagon.providers.http.HttpWagon
    java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
    at java.lang.ClassLoader.defineClass1(Native Method)
    ...
Caused by: java.lang.ClassNotFoundException:   org.apache.http.ssl.TrustStrategy
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)   
    ... 72 more

有人知道,为什么部署在 org.apache.httpcomponents.httpclient 的 4.3.x 版上工作正常,而在 4.4 版上部署失败?

最佳答案

我怀疑是HttpCore的版本? HttpClient 所基于的,仍然解析为 4.3.x。尝试将其显式设置为 4.4

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4</version>
</dependency>

关于Maven 嵌入式部署不适用于 org.apache.httpcomponents.httpclient 版本 4.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28671219/

相关文章:

java - GRPC + Maven : Unable to use `oneof` : Symbol `InternalOneOfEnum` missing

maven - 在单个 pom 中部署多个文件

java - Maven 突然抛出错误,类文件被截断

java - 以 UTF-8 格式获取向 GeoServer 发出的 WFS 请求结果

java - Apache HTTP Client 和代理的条件设置

java - Maven 部署 -x 给出 Failed to deploy artifacts ....Access returned to : http://

java - 在 junit 中错开并行测试开始?

java - 使用 Maven 将公共(public)文件夹添加到我的两个模块

android - 覆盖来自在 Android 中有翻译的模块/库的字符串资源

java - 如何使用不同的 SSL 客户端身份验证证书创建 Apache HttpClient 池