Сборка с Java 1.8 и развертывание в Java 1.7 - PullRequest
0 голосов
/ 29 июня 2018

Наше существующее веб-приложение разработано с использованием JDK 1.6 и построено с использованием maven (2.2.1). Построенные артефакты (war / ear) развертываются в среде с использованием Java 7.

С июня 2018 года устаревшие протоколы TLS 1.0 и 1.1 больше не будут поддерживаться различными продуктами, такими как Maven, JFrog. Любой клиент, обращающийся к maven или JFrog, должен использовать TLS 1.2. Мы используем Bamboo for CI, который в настоящее время использует JDK 1.6 для сборки, и в настоящее время все сборки отказывают из-за устаревших протоколов. Сборка с Java 1.8 решает проблемы, но я не уверен, что возникнут какие-либо проблемы, если я соберу (maven) с Java 1.8 и разверну артефакты (war / ear) в среде, использующей Java 1.7. Любые указатели будут полезны.

Обновление -1

Мы решили добавить версию сборки в Java 1.8, так как при попытке сборки (maven) с использованием Java версии 1.7.0_80 мы получаем следующую ошибку:

    [DEBUG] Error transferring file: Received fatal alert: handshake_failure
org.apache.maven.wagon.TransferFailedException: Error transferring file: Received fatal alert: handshake_failure
        at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:143)
        at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
        at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
        at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
        at org.apache.maven.artifact.manager.DefaultWagonManager.getRemoteFile(DefaultWagonManager.java:546)
        at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:427)
        at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:382)
        at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:216)
        at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:90)
        at org.apache.maven.project.DefaultMavenProjectBuilder.findModelFromRepository(DefaultMavenProjectBuilder.java:558)
        at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromRepository(DefaultMavenProjectBuilder.java:251)
        at org.apache.maven.plugin.DefaultPluginManager.checkRequiredMavenVersion(DefaultPluginManager.java:277)
        at org.apache.maven.plugin.DefaultPluginManager.verifyVersionedPlugin(DefaultPluginManager.java:205)
        at org.apache.maven.plugin.DefaultPluginManager.verifyPlugin(DefaultPluginManager.java:184)
        at org.apache.maven.plugin.DefaultPluginManager.loadPluginDescriptor(DefaultPluginManager.java:1642)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPlugin(DefaultLifecycleExecutor.java:1540)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.bindPluginToLifecycle(DefaultLifecycleExecutor.java:1503)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.constructLifecycleMappings(DefaultLifecycleExecutor.java:1282)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:534)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
        at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1301)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
        at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:115)

Java 1.8 решает сбой сборки, но я не уверен, что возникнут какие-либо проблемы, если я разверну артефакты (war / ear) в среде, использующей Java 1.7

Обновление - 2 Как упомянуто khmarbaise, я использовал набор инструментов для моего сценария, а ниже приведены подробности:

MAVEN_JAVA_HOME & JAVA_HOME - путь к JDK 1.8

Maven версия - 2.2.1

Обновлен родительский pom.xml моего приложения, чтобы в него был включен плагин toolchain, как показано ниже:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
  <execution>
    <goals>
      <goal>toolchain</goal>
    </goals>
  </execution>
</executions>
<configuration>
  <toolchains>
    <jdk>
      <version>1.6</version>
      <vendor>sun</vendor>
    </jdk>
  </toolchains>
</configuration>

Файл toolchains.xml (см. Ниже) - это файл конфигурации, в котором вы устанавливаете пути установки своих наборов инструментов. Я поместил этот файл в каталог /.m2.

 <?xml version="1.0" encoding="UTF8"?>
<toolchains>
  <!-- JDK toolchains -->
  <toolchain>
    <type>jdk</type>
    <provides>
      <version>1.6</version>
      <vendor>sun</vendor>
    </provides>
    <configuration>
      <jdkHome>C:\Program Files\Java\jdk1.6.0_45</jdkHome>
    </configuration>
  </toolchain>
</toolchains>

Я подтвердил, что на моем локальном компьютере сборка прошла успешно. Мне нужно проверить, как передать файл toolchain.xml в мои бамбуковые конфигурации.

Подробнее о настройке цепочек инструментов см. https://maven.apache.org/guides/mini/guide-using-toolchains.html.

1 Ответ

0 голосов
/ 30 июня 2018

Как упомянуто khmarbaise, я использовал набор инструментов для моего сценария, а ниже приведены подробности:

MAVEN_JAVA_HOME & JAVA_HOME - путь к JDK 1.8

Maven версия - 2.2.1

Обновлен родительский pom.xml моего приложения, чтобы включить плагин toolchain, как показано ниже:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
  <execution>
    <goals>
      <goal>toolchain</goal>
    </goals>
  </execution>
</executions>
<configuration>
  <toolchains>
    <jdk>
      <version>1.6</version>
      <vendor>sun</vendor>
    </jdk>
  </toolchains>
</configuration>

Файл toolchains.xml (см. Ниже) - это файл конфигурации, в котором вы задаете пути установки своих наборов инструментов. Я поместил этот файл в каталог /.m2.

<?xml version="1.0" encoding="UTF8"?>
<toolchains>
  <!-- JDK toolchains -->
  <toolchain>
    <type>jdk</type>
    <provides>
      <version>1.6</version>
      <vendor>sun</vendor>
    </provides>
    <configuration>
      <jdkHome>C:\Program Files\Java\jdk1.6.0_45</jdkHome>
    </configuration>
  </toolchain>
</toolchains>

Я подтвердил, что в моей локальной системе сборка прошла успешно Мне нужно проверить, как передать файл toolchain.xml в мои бамбуковые конфигурации.

Подробнее о настройке цепочек инструментов см. https://maven.apache.org/guides/mini/guide-using-toolchains.html.

...