mirror of
https://github.com/square/okhttp.git
synced 2025-08-07 12:42:57 +03:00
Build with 3 JDK targets (#4568)
* Build with 3 targets * Update maven * remove jdk 12 ea * Try without errorprone temporarily * Still set 1.8 * javadoc tolerance * Profiles for 10 + 11 * More tolerant * JDK 11 test skipping * Cleanup imports * Link to github issues * Support JDK 12 building
This commit is contained in:
committed by
Jesse Wilson
parent
933bb401e8
commit
50df11c471
@@ -21,6 +21,6 @@ elif [ "$TRAVIS_BRANCH" != "$BRANCH" ]; then
|
||||
echo "Skipping snapshot deployment: wrong branch. Expected '$BRANCH' but was '$TRAVIS_BRANCH'."
|
||||
else
|
||||
echo "Deploying snapshot..."
|
||||
mvn clean source:jar javadoc:jar deploy --settings=".buildscript/settings.xml" -DskipTests
|
||||
./mvnw clean source:jar javadoc:jar deploy --settings=".buildscript/settings.xml" -DskipTests -B
|
||||
echo "Snapshot deployed!"
|
||||
fi
|
||||
|
17
.travis.yml
17
.travis.yml
@@ -2,14 +2,19 @@ language: java
|
||||
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
# - openjdk11
|
||||
- openjdk8
|
||||
- openjdk11
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- oracle-java8-installer # Updates JDK 8 to the latest available.
|
||||
before_install:
|
||||
- mvn -N io.takari:maven:wrapper -Dmaven=3.6.0
|
||||
- echo "MAVEN_OPTS='-Dmaven.repo.local=$HOME/.m2/repository -Xmx1g -Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss:SSS'" > ~/.mavenrc
|
||||
|
||||
script: mvn test javadoc:jar source:jar -B
|
||||
install:
|
||||
- ./mvnw dependency:resolve -B
|
||||
|
||||
script:
|
||||
- ./mvnw test -B
|
||||
- ./mvnw javadoc:jar source:jar -B
|
||||
|
||||
after_success:
|
||||
- .buildscript/deploy_snapshot.sh
|
||||
|
@@ -31,6 +31,9 @@ import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static okhttp3.Protocol.HTTP_1_1;
|
||||
import static okhttp3.Protocol.HTTP_2;
|
||||
import static okhttp3.tls.internal.TlsUtil.localhost;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.fail;
|
||||
@@ -143,8 +146,8 @@ public final class LoggingEventListenerTest {
|
||||
.assertLogMatch("connectStart: " + url.host() + "/.+ DIRECT")
|
||||
.assertLogMatch("secureConnectStart")
|
||||
.assertLogMatch("secureConnectEnd: Handshake\\{"
|
||||
+ "tlsVersion=TLS_1_2 "
|
||||
+ "cipherSuite=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "
|
||||
+ "tlsVersion=TLS_1_[23] "
|
||||
+ "cipherSuite=(?:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384|TLS_AES_128_GCM_SHA256) "
|
||||
+ "peerCertificates=\\[CN=localhost\\] "
|
||||
+ "localCertificates=\\[\\]}")
|
||||
.assertLogMatch("connectEnd: h2")
|
||||
@@ -189,6 +192,7 @@ public final class LoggingEventListenerTest {
|
||||
@Test
|
||||
public void connectFail() {
|
||||
server.useHttps(handshakeCertificates.sslSocketFactory(), false);
|
||||
server.setProtocols(asList(HTTP_2, HTTP_1_1));
|
||||
server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.FAIL_HANDSHAKE));
|
||||
url = server.url("/");
|
||||
|
||||
@@ -205,9 +209,9 @@ public final class LoggingEventListenerTest {
|
||||
.assertLogMatch("connectStart: " + url.host() + "/.+ DIRECT")
|
||||
.assertLogMatch("secureConnectStart")
|
||||
.assertLogMatch(
|
||||
"connectFailed: null javax\\.net\\.ssl\\.SSLProtocolException: Handshake message sequence violation, 1")
|
||||
"connectFailed: null javax\\.net\\.ssl\\.SSLProtocolException: (?:Unexpected handshake message: client_hello|Handshake message sequence violation, 1)")
|
||||
.assertLogMatch(
|
||||
"callFailed: javax.net.ssl.SSLProtocolException: Handshake message sequence violation, 1")
|
||||
"callFailed: javax\\.net\\.ssl\\.SSLProtocolException: (?:Unexpected handshake message: client_hello|Handshake message sequence violation, 1)")
|
||||
.assertNoMoreLogs();
|
||||
}
|
||||
|
||||
|
@@ -86,6 +86,8 @@ import static java.net.CookiePolicy.ACCEPT_ORIGINAL_SERVER;
|
||||
import static okhttp3.CipherSuite.TLS_DH_anon_WITH_AES_128_GCM_SHA256;
|
||||
import static okhttp3.TestUtil.awaitGarbageCollection;
|
||||
import static okhttp3.TestUtil.defaultClient;
|
||||
import static okhttp3.internal.platform.PlatformTest.getJvmSpecVersion;
|
||||
import static okhttp3.internal.platform.PlatformTest.getPlatform;
|
||||
import static okhttp3.tls.internal.TlsUtil.localhost;
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -95,6 +97,7 @@ import static org.junit.Assert.assertNotSame;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
|
||||
public final class CallTest {
|
||||
@Rule public final TestRule timeout = new Timeout(30_000, TimeUnit.MILLISECONDS);
|
||||
@@ -1188,6 +1191,10 @@ public final class CallTest {
|
||||
* be unauthenticated.
|
||||
*/
|
||||
@Test public void tlsSuccessWithNoPeerCertificates() throws Exception {
|
||||
// TODO https://github.com/square/okhttp/issues/4598
|
||||
// No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
|
||||
assumeFalse(getJvmSpecVersion().equals("11"));
|
||||
|
||||
server.enqueue(new MockResponse()
|
||||
.setBody("abc"));
|
||||
|
||||
@@ -1249,6 +1256,10 @@ public final class CallTest {
|
||||
@Test public void tlsHostnameVerificationFailureNoPeerCertificates() throws Exception {
|
||||
server.enqueue(new MockResponse());
|
||||
|
||||
// TODO https://github.com/square/okhttp/issues/4598
|
||||
// No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
|
||||
assumeFalse(getJvmSpecVersion().equals("11"));
|
||||
|
||||
// The _anon_ cipher suites don't require server certificates.
|
||||
CipherSuite cipherSuite = TLS_DH_anon_WITH_AES_128_GCM_SHA256;
|
||||
|
||||
@@ -1325,6 +1336,13 @@ public final class CallTest {
|
||||
}
|
||||
|
||||
@Test public void matchingPinnedCertificate() throws Exception {
|
||||
// TODO https://github.com/square/okhttp/issues/4598
|
||||
// java.util.NoSuchElementException
|
||||
// at java.base/java.util.ArrayDeque.removeFirst(ArrayDeque.java:363)
|
||||
// at okhttp3.internal.tls.BasicCertificateChainCleaner.clean(BasicCertificateChainCleaner.java:58)
|
||||
// at okhttp3.CertificatePinner.check(CertificatePinner.java:166)
|
||||
assumeFalse(getJvmSpecVersion().equals("11"));
|
||||
|
||||
enableTls();
|
||||
server.enqueue(new MockResponse());
|
||||
server.enqueue(new MockResponse());
|
||||
|
@@ -104,10 +104,13 @@ import static okhttp3.mockwebserver.SocketPolicy.SHUTDOWN_INPUT_AT_END;
|
||||
import static okhttp3.mockwebserver.SocketPolicy.SHUTDOWN_OUTPUT_AT_END;
|
||||
import static okhttp3.mockwebserver.SocketPolicy.UPGRADE_TO_SSL_AT_END;
|
||||
import static okhttp3.tls.internal.TlsUtil.localhost;
|
||||
import static org.hamcrest.CoreMatchers.either;
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
@@ -711,7 +714,8 @@ public final class URLConnectionTest {
|
||||
|
||||
RecordedRequest fallbackRequest = server.takeRequest();
|
||||
assertEquals("GET /foo HTTP/1.1", fallbackRequest.getRequestLine());
|
||||
assertEquals(TlsVersion.TLS_1_2, fallbackRequest.getTlsVersion());
|
||||
assertThat(fallbackRequest.getTlsVersion(),
|
||||
either(equalTo(TlsVersion.TLS_1_2)).or(equalTo(TlsVersion.TLS_1_3)));
|
||||
}
|
||||
|
||||
@Test public void connectViaHttpsWithSSLFallbackFailuresRecorded() {
|
||||
@@ -762,7 +766,8 @@ public final class URLConnectionTest {
|
||||
assertContent("def", urlFactory.open(server.url("/").url()));
|
||||
|
||||
Set<TlsVersion> tlsVersions =
|
||||
EnumSet.of(TlsVersion.TLS_1_0, TlsVersion.TLS_1_2); // v1.2 on OpenJDK 8.
|
||||
EnumSet.of(TlsVersion.TLS_1_0, TlsVersion.TLS_1_2,
|
||||
TlsVersion.TLS_1_3); // v1.2 on OpenJDK 8.
|
||||
|
||||
RecordedRequest request1 = server.takeRequest();
|
||||
assertTrue(tlsVersions.contains(request1.getTlsVersion()));
|
||||
@@ -1180,7 +1185,9 @@ public final class URLConnectionTest {
|
||||
@Test public void disconnectDuringConnect_cookieJar() {
|
||||
final AtomicReference<HttpURLConnection> connectionHolder = new AtomicReference<>();
|
||||
class DisconnectingCookieJar implements CookieJar {
|
||||
@Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { }
|
||||
@Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Cookie> loadForRequest(HttpUrl url) {
|
||||
connectionHolder.get().disconnect();
|
||||
@@ -1406,8 +1413,7 @@ public final class URLConnectionTest {
|
||||
|
||||
/**
|
||||
* Test a bug where gzip input streams weren't exhausting the input stream, which corrupted the
|
||||
* request that followed or prevented connection reuse.
|
||||
* http://code.google.com/p/android/issues/detail?id=7059
|
||||
* request that followed or prevented connection reuse. http://code.google.com/p/android/issues/detail?id=7059
|
||||
* http://code.google.com/p/android/issues/detail?id=38817
|
||||
*/
|
||||
private void testClientConfiguredGzipContentEncodingAndConnectionReuse(TransferKind transferKind,
|
||||
@@ -2445,9 +2451,10 @@ public final class URLConnectionTest {
|
||||
|
||||
@Test public void httpsWithCustomTrustManager() throws Exception {
|
||||
RecordingHostnameVerifier hostnameVerifier = new RecordingHostnameVerifier();
|
||||
RecordingTrustManager trustManager = new RecordingTrustManager(handshakeCertificates.trustManager());
|
||||
RecordingTrustManager trustManager =
|
||||
new RecordingTrustManager(handshakeCertificates.trustManager());
|
||||
SSLContext sslContext = Platform.get().getSSLContext();
|
||||
sslContext.init(null, new TrustManager[] { trustManager }, null);
|
||||
sslContext.init(null, new TrustManager[] {trustManager}, null);
|
||||
|
||||
urlFactory.setClient(urlFactory.client().newBuilder()
|
||||
.hostnameVerifier(hostnameVerifier)
|
||||
@@ -2643,8 +2650,7 @@ public final class URLConnectionTest {
|
||||
}
|
||||
|
||||
/**
|
||||
* Retry redirects if the socket is closed.
|
||||
* https://code.google.com/p/android/issues/detail?id=41576
|
||||
* Retry redirects if the socket is closed. https://code.google.com/p/android/issues/detail?id=41576
|
||||
*/
|
||||
@Test public void sameConnectionRedirectAndReuse() throws Exception {
|
||||
server.enqueue(new MockResponse()
|
||||
@@ -3530,7 +3536,9 @@ public final class URLConnectionTest {
|
||||
}
|
||||
|
||||
@Test public void interceptorsNotInvoked() throws Exception {
|
||||
Interceptor interceptor = chain -> { throw new AssertionError(); };
|
||||
Interceptor interceptor = chain -> {
|
||||
throw new AssertionError();
|
||||
};
|
||||
urlFactory.setClient(urlFactory.client().newBuilder()
|
||||
.addInterceptor(interceptor)
|
||||
.addNetworkInterceptor(interceptor)
|
||||
@@ -3611,7 +3619,9 @@ public final class URLConnectionTest {
|
||||
/** Confirm that runtime exceptions thrown inside of OkHttp propagate to the caller. */
|
||||
@Test public void unexpectedExceptionSync() throws Exception {
|
||||
urlFactory.setClient(urlFactory.client().newBuilder()
|
||||
.dns(hostname -> { throw new RuntimeException("boom!"); })
|
||||
.dns(hostname -> {
|
||||
throw new RuntimeException("boom!");
|
||||
})
|
||||
.build());
|
||||
|
||||
server.enqueue(new MockResponse());
|
||||
@@ -3628,7 +3638,9 @@ public final class URLConnectionTest {
|
||||
/** Confirm that runtime exceptions thrown inside of OkHttp propagate to the caller. */
|
||||
@Test public void unexpectedExceptionAsync() throws Exception {
|
||||
urlFactory.setClient(urlFactory.client().newBuilder()
|
||||
.dns(hostname -> { throw new RuntimeException("boom!"); })
|
||||
.dns(hostname -> {
|
||||
throw new RuntimeException("boom!");
|
||||
})
|
||||
.build());
|
||||
|
||||
server.enqueue(new MockResponse());
|
||||
@@ -3680,7 +3692,7 @@ public final class URLConnectionTest {
|
||||
Thread.sleep(500);
|
||||
|
||||
OutputStream os = connection1.getOutputStream();
|
||||
os.write(new byte[] { '1', '2', '3' });
|
||||
os.write(new byte[] {'1', '2', '3'});
|
||||
os.close();
|
||||
assertContent("def", connection1);
|
||||
|
||||
|
@@ -33,6 +33,10 @@ public class PlatformTest {
|
||||
return System.getProperty("okhttp.platform", "platform");
|
||||
}
|
||||
|
||||
public static String getJvmSpecVersion() {
|
||||
return System.getProperty("java.specification.version", "unknown");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToStringIsClassname() {
|
||||
assertEquals("Platform", new Platform().toString());
|
||||
|
@@ -43,18 +43,27 @@ import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import static okhttp3.TestUtil.defaultClient;
|
||||
import static okhttp3.internal.platform.PlatformTest.getJvmSpecVersion;
|
||||
import static okhttp3.internal.platform.PlatformTest.getPlatform;
|
||||
import static okhttp3.tls.internal.TlsUtil.newKeyManager;
|
||||
import static okhttp3.tls.internal.TlsUtil.newTrustManager;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
|
||||
public final class CertificatePinnerChainValidationTest {
|
||||
@Rule public final MockWebServer server = new MockWebServer();
|
||||
|
||||
/** The pinner should pull the root certificate from the trust manager. */
|
||||
@Test public void pinRootNotPresentInChain() throws Exception {
|
||||
// TODO https://github.com/square/okhttp/issues/4598
|
||||
// java.util.NoSuchElementException
|
||||
// at java.base/java.util.ArrayDeque.removeFirst(ArrayDeque.java:363)
|
||||
// at okhttp3.internal.tls.BasicCertificateChainCleaner.clean(BasicCertificateChainCleaner.java:58)
|
||||
// at okhttp3.CertificatePinner.check(CertificatePinner.java:166)
|
||||
assumeFalse(getJvmSpecVersion().equals("11"));
|
||||
|
||||
HeldCertificate rootCa = new HeldCertificate.Builder()
|
||||
.serialNumber(1L)
|
||||
.certificateAuthority(1)
|
||||
@@ -112,6 +121,13 @@ public final class CertificatePinnerChainValidationTest {
|
||||
|
||||
/** The pinner should accept an intermediate from the server's chain. */
|
||||
@Test public void pinIntermediatePresentInChain() throws Exception {
|
||||
// TODO https://github.com/square/okhttp/issues/4598
|
||||
// java.util.NoSuchElementException
|
||||
// at java.base/java.util.ArrayDeque.removeFirst(ArrayDeque.java:363)
|
||||
// at okhttp3.internal.tls.BasicCertificateChainCleaner.clean(BasicCertificateChainCleaner.java:58)
|
||||
// at okhttp3.CertificatePinner.check(CertificatePinner.java:166)
|
||||
assumeFalse(getJvmSpecVersion().equals("11"));
|
||||
|
||||
HeldCertificate rootCa = new HeldCertificate.Builder()
|
||||
.serialNumber(1L)
|
||||
.certificateAuthority(1)
|
||||
|
@@ -43,12 +43,14 @@ import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import static okhttp3.TestUtil.defaultClient;
|
||||
import static okhttp3.internal.platform.PlatformTest.getJvmSpecVersion;
|
||||
import static okhttp3.internal.platform.PlatformTest.getPlatform;
|
||||
import static okhttp3.tls.internal.TlsUtil.newKeyManager;
|
||||
import static okhttp3.tls.internal.TlsUtil.newTrustManager;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
|
||||
public final class ClientAuthTest {
|
||||
@Rule public final MockWebServer server = new MockWebServer();
|
||||
@@ -216,6 +218,10 @@ public final class ClientAuthTest {
|
||||
}
|
||||
|
||||
@Test public void invalidClientAuthFails() throws Throwable {
|
||||
// TODO github issue link
|
||||
// StreamReset stream was reset: PROT...
|
||||
assumeFalse(getJvmSpecVersion().equals("11"));
|
||||
|
||||
HeldCertificate clientCert2 = new HeldCertificate.Builder()
|
||||
.serialNumber(4L)
|
||||
.commonName("Jethro Willis")
|
||||
|
96
pom.xml
96
pom.xml
@@ -150,23 +150,9 @@
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<compilerId>javac-with-errorprone</compilerId>
|
||||
<forceJavacCompilerUse>true</forceJavacCompilerUse>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
</configuration>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-compiler-javac-errorprone</artifactId>
|
||||
<version>2.8.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.errorprone</groupId>
|
||||
<artifactId>error_prone_core</artifactId>
|
||||
<version>2.3.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
@@ -203,6 +189,10 @@
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<configuration>
|
||||
<failOnError>false</failOnError>
|
||||
<doclint>none</doclint>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
@@ -282,6 +272,57 @@
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>errorprone</id>
|
||||
<activation>
|
||||
<jdk>1.8</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<compilerId>javac-with-errorprone</compilerId>
|
||||
<forceJavacCompilerUse>true</forceJavacCompilerUse>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
</configuration>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.plexus</groupId>
|
||||
<artifactId>plexus-compiler-javac-errorprone</artifactId>
|
||||
<version>2.8.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.errorprone</groupId>
|
||||
<artifactId>error_prone_core</artifactId>
|
||||
<version>2.3.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>javadoc-lenient</id>
|
||||
<!-- MJAVADOC-555 Fixed in upcoming JDK builds -->
|
||||
<activation>
|
||||
<jdk>11</jdk>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>alpn-when-jdk8</id>
|
||||
<activation>
|
||||
@@ -323,6 +364,33 @@
|
||||
<okhttp.platform>jdk9</okhttp.platform>
|
||||
</properties>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>jdk10</id>
|
||||
<activation>
|
||||
<jdk>10</jdk>
|
||||
</activation>
|
||||
<properties>
|
||||
<okhttp.platform>jdk9</okhttp.platform>
|
||||
</properties>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>jdk11</id>
|
||||
<activation>
|
||||
<jdk>11</jdk>
|
||||
</activation>
|
||||
<properties>
|
||||
<okhttp.platform>jdk9</okhttp.platform>
|
||||
</properties>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>jdk12</id>
|
||||
<activation>
|
||||
<jdk>12</jdk>
|
||||
</activation>
|
||||
<properties>
|
||||
<okhttp.platform>jdk9</okhttp.platform>
|
||||
</properties>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>conscrypt</id>
|
||||
<properties>
|
||||
|
Reference in New Issue
Block a user