OpenShift Maven не использует правильный JAVA_HOME

#java #linux #maven #openshift

#java #linux #maven #openshift

Вопрос:

Я потратил часы на этот скрипт, который автоматически перестраивает и обновляет мою программу в openshift. Мои сценарии следующие:

запустить хук:

 #!/bin/bash
# The logic to start up your application should be put in this
# script. The application will work only if it binds to
# $OPENSHIFT_DIY_IP:8080
source $OPENSHIFT_CARTRIDGE_SDK_BASH

nohup /bin/bash $OPENSHIFT_REPO_DIR/diy/abot.sh > $OPENSHIFT_LOG_DIR/diy.log amp;
client_result "Success!"
exit 0
 

стоп-хук:

 #!/bin/bash
source $OPENSHIFT_CARTRIDGE_SDK_BASH
PID=`cat $OPENSHIFT_DATA_DIR/abot.pid`
echo PID: $PID
if kill $PID
then
    exit 0
else
    client_result "App already stoped!"
fi 
 

abot.sh , сценарий «демонизирован», который запускает все процессы

 #!/bin/bash
cd $OPENSHIFT_DATA_DIR
echo $ > abot.pid
JAVA_HOME=/etc/alternatives/java_sdk_1.8.0
PATH=$JAVA_HOME/bin:$PATH
javac -version
while :
do
    if [ ! -d AbotDir ]
    then
        git clone https://github.com/ArsenArsen/ABot.git AbotDir
    else
        cd AbotDir
        git pull
        cd ..
    fi
    cd AbotDir
    echo $JAVA_HOME | $PATH
    $JAVA_HOME/bin/javac -version
    $JAVA_HOME/bin/java -version
    mvn -version
    mvn -e -Dmaven.repo.local=$OPENSHIFT_DATA_DIR/.m2/repository
    cd ..
    $JAVA_HOME/bin/java -jar AbotDir/target/ABot-jar-with-dependencies.jar -nl -t TOKEN
    echo "" > $OPENSHIFT_LOG_DIR/diy.log
done
 

Я провел несколько тестов, все они указывают на вывод о том, что maven использует путь Java7, даже после того, как он был установлен на Java8. Одним из таких является:
JAVA_HOME=/etc/alternatives/java_sdk_1.8.0/;mvn -version;echo $JAVA_HOME
, что приводит к:
допустимый XHTML

Комментарии:

1. Я бы предположил, что вы, возможно, настроили $HOME/.mavenrc файл или у вас есть другая версия java на вашем ПУТИ, кроме того, я бы предложил использовать более современную версию Maven (3.3.9)…

2. Я не могу обновить Maven или удалить версию Java, но проверю файл mavenrc. Проблема в том, что я использую PaaS OpenShift, который не дает мне пароль sudo, по какой-то причине. @khmarbaise

3. У меня нет файла mavenrc @khmarbaise

Ответ №1:

Я не приму этот ответ, но вот он идет:

Вы можете скопировать maven в его собственный каталог, а затем отредактировать сценарий запуска, чтобы он принудительно использовал Java8. Причина, по которой я не буду принимать этот ответ, заключается в том, что он очень сложный и расточительный. Для использования только в том случае, если другого способа нет. Для тех, кто знает, как это сделать, пожалуйста, не стесняйтесь отвечать.