Поддерживает ли конвейер сборки Bluemix devops приложения Java 8?

Учитывая Bluemix объявление о поддержке Java 8. Что мне нужно сделать, чтобы мое приложение Java 8 скомпилировалось в конвейере сборки IBM Bluesmix (сборка и развертывание Jazzhub).

Я установил переменную среды java8 и перезагрузил приложение, используя следующее:

cf set-env <myApp> JBP_CONFIG_IBMJDK "version: 1.8.+"
cf restage <myApp>

Конкретный «тип построителя», который я использую, - «Maven», и сбои, которые я получаю, связаны с новыми классами даты и времени в java8.

[ERROR] <...>/services/TestHelperService.java:[3,17] package java.time does not exist
[ERROR] <...>/services/TestHelperService.java:[37,17] cannot find symbol
[ERROR] symbol:   class LocalDateTime
[ERROR] location: class <...>.services.TestHelperService

person user1605729    schedule 23.05.2015    source источник


Ответы (4)


Чтобы использовать Java 8, вам нужно изменить переменную среды JAVA_HOME в команде оболочки сборки:

export JAVA_HOME=~/java8

Например:

#!/bin/bash
#export JAVA_HOME=~/java8 - Bluemix have changed the java8 location
export JAVA_HOME=/opt/IBM/java8
mvn -B package
person Eric Samuelsson    schedule 26.05.2015
comment
Это в сочетании с обеспечением того, чтобы на этапе развертывания был файл manifest.yml с установленной переменной env, т. е. «JBP_CONFIG_IBMJDK version: 1.8.+». - person user1605729; 14.06.2015

Я также хотел использовать Java8 в конвейере сборки Bluemix Jazz. Простое изменение $JAVA_HOME у меня не сработало. Мне также пришлось обновить $PATH.

export JAVA_HOME=/opt/IBM/java8
export PATH=$JAVA_HOME/bin:$PATH

После этого maven был запущен на java8.

person Chathurika Sandarenu    schedule 04.06.2016

Привет, это решение не работает для меня, вот мой скрипт сборки

#!/bin/bash
echo "Java Home before $JAVA_HOME"
export JAVA_HOME=~/java8
echo "Java Home after $JAVA_HOME"
#mvn -B package -DskipTests
#mvn -B package

И вот вывод консоли, как вы можете видеть, JAVA_HOME не изменяется после команды «экспорт».

Checking out Revision 86514c6dc277b6903fcd6f51ca7c97ea733b1d42 (detached)
[ba6eba91-33a3-4b67-8efd-48962cf063ba] $ /bin/bash /tmp/hudson7007424628517212775.sh
Java Home before /home/jenkins/java
Java Home after /home/jenkins/java
Base artifact directory /home/jenkins/workspace/e92a4db8-6702-d006-0cdc-2a827a4e78a5/ba6eba91-33a3-4b67-8efd-48962cf063ba/target does not exist or is not a valid directory.
[xUnit] [INFO] - Starting to record.
[xUnit] [INFO] - Processing JUnit
[xUnit] [INFO] - [JUnit] - No test report file(s) were found with the pattern 'target/surefire-reports/TEST-*.xml' relative to '/home/jenkins/workspace/e92a4db8-6702-d006-0cdc-2a827a4e78a5/ba6eba91-33a3-4b67-8efd-48962cf063ba' for the testing framework 'JUnit'.  Did you enter a pattern relative to the correct directory?  Did you generate the result report(s) for 'JUnit'?
[xUnit] [ERROR] - No test reports found for the metric 'JUnit' with the resolved pattern 'target/surefire-reports/TEST-*.xml'. Configuration error?.
[xUnit] [INFO] - There are errors when processing test results.
[xUnit] [INFO] - Skipping tests recording.
Finished: SUCCESS
person Edwin Quai Hoi    schedule 30.07.2015

Я могу подтвердить, что настройка JAVA_HOME на /opt/IBM/java8 в скрипте сборки работает (проверено 4 мая 2016 г.):

#!/bin/bash
 echo "Java home before: $JAVA_HOME"
 export JAVA_HOME=/opt/IBM/java8
 echo "Java home after: $JAVA_HOME"
 mvn -B package

Это приводит к выводу:

Java home before: /opt/IBM/java
Java home after: /opt/IBM/java8

Как отмечалось ранее, на этапе развертывания JBP_CONFIG_IBMJDK должен иметь значение «версия: 1.8.+» (cf set-env myApp JBP_CONFIG_IBMJDK "version: 1.8.+" или строка в разделе env: в manifest.yml) или (это то, что я делаю) вам нужно определить buildpack: java_buildpack в manifest.yml. С мая 2015 года java_buildpack использует JDK8.

Последнее, о чем нужно знать, это, конечно, изменить исходную версию maven-compiler-plugin в pom.xml, но это не относится к Bluemix.

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>(whatever version is current)</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>
person Tim Dörnemann    schedule 04.05.2016