You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2017/05/25 15:07:57 UTC

hbase git commit: HBASE-17997: In dev environment, add jruby-complete jar to classpath only when jruby is needed

Repository: hbase
Updated Branches:
  refs/heads/master 3e426b2f8 -> 4ab94744e


HBASE-17997: In dev environment, add jruby-complete jar to classpath only when jruby is needed

Signed-off-by: tedyu <yu...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/4ab94744
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/4ab94744
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/4ab94744

Branch: refs/heads/master
Commit: 4ab94744e2e17a9ec4614ebb5ad80598e5dfbcd5
Parents: 3e426b2
Author: Xiang Li <wa...@gmail.com>
Authored: Wed May 24 14:57:37 2017 +0800
Committer: tedyu <yu...@gmail.com>
Committed: Thu May 25 08:07:50 2017 -0700

----------------------------------------------------------------------
 bin/hbase              | 19 ++++++++++++++-----
 bin/hbase.cmd          | 21 +++++++++++++++++----
 hbase-assembly/pom.xml | 17 +++++++++++++++++
 3 files changed, 48 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/4ab94744/bin/hbase
----------------------------------------------------------------------
diff --git a/bin/hbase b/bin/hbase
index fa70f6e..d7a8069 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
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/4ab94744/bin/hbase.cmd
----------------------------------------------------------------------
diff --git a/bin/hbase.cmd b/bin/hbase.cmd
index 67a3bc1..457e4f7 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!
+      )
     )
   )
 )

http://git-wip-us.apache.org/repos/asf/hbase/blob/4ab94744/hbase-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml
index 79d154d..b65a9b7 100644
--- a/hbase-assembly/pom.xml
+++ b/hbase-assembly/pom.xml
@@ -103,8 +103,25 @@
             </goals>
             <configuration>
               <outputFile>${project.parent.basedir}/target/cached_classpath.txt</outputFile>
+              <excludeArtifactIds>jruby-complete</excludeArtifactIds>
             </configuration>
           </execution>
+
+          <execution>
+            <!-- Generates a file containing jruby jar.
+                 In dev environment, bin/hbase will read the file and add the jar into classpath when jruby is needed
+            -->
+            <id>create-hbase-generated-classpath-jruby</id>
+            <phase>test</phase>
+            <goals>
+              <goal>build-classpath</goal>
+            </goals>
+            <configuration>
+              <outputFile>${project.parent.basedir}/target/cached_classpath_jruby.txt</outputFile>
+              <includeArtifactIds>jruby-complete</includeArtifactIds>
+            </configuration>
+          </execution>
+
         <!--
            Build an aggregation of our templated NOTICE file and the NOTICE files in our dependencies.
            If MASSEMBLY-382 is fixed we could do this in the assembly