为 Scala 构建 JVM 2_11

Building JVM for Scala 2_11

这是关于项目https://github.com/DiUS/pact-jvm的问题。

问题

当我验证契约时,我需要能够使用客户端身份验证,因为提供商实际上需要客户端身份验证。我将在我所说的内容前面加上一个我不太熟悉的声明 groovy:我主要使用 scala、java 或 javascript 进行编程。查看代码后,我认为目前不支持客户端身份验证,因此我想提出一个包含该支持的拉取请求。

到目前为止我做了什么

我已经设法让 Https 与信任库一起工作:我复制了 HttpTarget 并创建了一个 HttpsTarget,并在 HttpsTarget 中指定了 providerinfo 中的信任库。不幸的是,查看代码似乎没有指定客户端证书的方法,所以我需要更改 providerinfo class 以便能够指定它的位置(与提供信任库的方式相同).

我的问题是我已经使用 'for contributors' 中的建议编译了代码,但是当我在本地发布时,我只发布了 scala 版本 2_12。由于版本问题和scala版本之间的二进制不兼容,我需要发布到scala2_11。我的 gradle 技能甚至比我的 groovy 技能还差。我已经搜索了所有对 scalaVersion 的引用,发现围绕它有很多逻辑,但我没有设法找到它的指定位置。

问题

如果我可以使用当前契约验证器的客户端身份验证,你能告诉我吗?如果没有,你能告诉我如何发布支持 scala 的项目吗2_11?

谢谢

最后我做了自己的Http Target。我需要的是从 Junit 运行,不是一般情况,这就足够了:

public class HttpsTarget extends HttpTarget {
    public HttpsTarget(final int port) {
        super("https", "localhost", port, "/", false);
    }

    static class HttpsClientFactory implements IHttpClientFactory {

        @NotNull
        @Override
        public CloseableHttpClient newClient(Object o) {
            SSLContext sslContext = // put here code to make ssl context
            CloseableHttpClient httpClient = HttpClients
                    .custom()
                    .setSSLContext(sslContext)
                    .build();
            return httpClient;
        }
    }

    @Override
    public void testInteraction(final String consumerName, final Interaction interaction, PactSource source) {
        ProviderInfo provider = getProviderInfo(source);
        ConsumerInfo consumer = new ConsumerInfo(consumerName);
        ProviderVerifier verifier = setupVerifier(interaction, provider, consumer);

        Map<String, Object> failures = new HashMap<>();
        ProviderClient client = new ProviderClient(provider, new HttpsClientFactory());
        verifier.verifyResponseFromProvider(provider, interaction, interaction.getDescription(), failures, client);
        reportTestResult(failures.isEmpty(), verifier);

        try {
            if (!failures.isEmpty()) {
                verifier.displayFailures(failures);
                throw getAssertionError(failures);
            }
        } finally {
            verifier.finialiseReports();
        }
    }
}