From 535a4c7d380279557ea1dc4fcc85d0a8bce16bef Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 24 May 2017 14:57:37 +0800 Subject: [PATCH] HBASE-17997: In dev environment, add jruby-complete to classpath only when jruby is needed --- bin/hbase | 19 ++++++++++++++----- bin/hbase.cmd | 21 +++++++++++++++++---- hbase-assembly/pom.xml | 17 +++++++++++++++++ 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/bin/hbase b/bin/hbase index fa70f6e3ab..16d1c880fd 100755 --- a/bin/hbase +++ b/bin/hbase @@ -320,11 +320,20 @@ if [[ $jruby_needed ]]; then HBASE_OPTS="$HBASE_OPTS -Djruby.home=$JRUBY_HOME -Djruby.lib=$JRUBY_HOME/lib" else # JRUBY_HOME is not specified explicitly - # add jruby packaged with HBase to CLASSPATH - JRUBY_PACKAGED_WITH_HBASE="$HBASE_HOME/lib/ruby/*.jar" - for jruby_jar in $JRUBY_PACKAGED_WITH_HBASE; do - CLASSPATH=$jruby_jar:$CLASSPATH; - done + if $in_dev_env; then # in dev environment + F_JRUBY="${HBASE_HOME}/target/cached_classpath_jruby.txt" + if [ ! -f "${F_JRUBY}" ]; then + echo "As this is a development environment, we need ${F_JRUBY} to be generated from maven (command: mvn install -DskipTests)" + exit 1 + fi + CLASSPATH=`cat "${F_JRUBY}"`:$CLASSPATH; + else # not in dev environment + # add jruby packaged with HBase to CLASSPATH + JRUBY_PACKAGED_WITH_HBASE="$HBASE_HOME/lib/ruby/*.jar" + for jruby_jar in $JRUBY_PACKAGED_WITH_HBASE; do + CLASSPATH=$jruby_jar:$CLASSPATH; + done + fi fi fi diff --git a/bin/hbase.cmd b/bin/hbase.cmd index 67a3bc1c2d..457e4f7572 100644 --- a/bin/hbase.cmd +++ b/bin/hbase.cmd @@ -286,10 +286,23 @@ if defined jruby-needed ( @rem JRUBY_HOME is not defined if not defined JRUBY_HOME ( - @rem add jruby packaged with HBase to CLASSPATH - set JRUBY_PACKAGED_WITH_HBASE=%HBASE_HOME%\lib\ruby\* - if defined jruby-needed ( - set CLASSPATH=!JRUBY_PACKAGED_WITH_HBASE!;!CLASSPATH! + @rem in dev environment + if "%in_dev_env%"=="true" ( + set cached_classpath_jruby_filename=%HBASE_HOME%\target\cached_classpath_jruby.txt + if not exist "!cached_classpath_jruby_filename!" ( + echo "As this is a development environment, we need !cached_classpath_jruby_filename! to be generated from maven (command: mvn install -DskipTests)" + goto :eof + ) + for /f "delims=" %%i in ('type "!cached_classpath_jruby_filename!"') do set CLASSPATH=%%i;%CLASSPATH% + ) + + @rem not in dev environment + if "%in_dev_env%"=="false" ( + @rem add jruby packaged with HBase to CLASSPATH + set JRUBY_PACKAGED_WITH_HBASE=%HBASE_HOME%\lib\ruby\* + if defined jruby-needed ( + set CLASSPATH=!JRUBY_PACKAGED_WITH_HBASE!;!CLASSPATH! + ) ) ) ) diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml index 79d154d173..b65a9b7c73 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -103,8 +103,25 @@ ${project.parent.basedir}/target/cached_classpath.txt + jruby-complete + + + + create-hbase-generated-classpath-jruby + test + + build-classpath + + + ${project.parent.basedir}/target/cached_classpath_jruby.txt + jruby-complete + + +