diff --git a/bin/ycsb.bat b/bin/ycsb.bat index ebf76e8e71b0042f47a3cd02876f57f88418b10b..10ada42c95e1ef3616e7fff2bcb234c686ad3561 100644 --- a/bin/ycsb.bat +++ b/bin/ycsb.bat @@ -155,7 +155,11 @@ GOTO classpathComplete :gotSource @REM Check for some basic libraries to see if the source has been built. -IF EXIST "%YCSB_HOME%\%BINDING_DIR%\target\*.jar" GOTO gotJars +IF EXIST "%YCSB_HOME%\core\target\dependency\*.jar" ( + IF EXIST "%YCSB_HOME%\%BINDING_DIR%\target\*.jar" ( + GOTO gotJars + ) +) @REM Call mvn to build source checkout. IF "%BINDING_NAME%" == "basic" GOTO buildCore @@ -166,7 +170,7 @@ SET MVN_PROJECT=core :gotMvnProject ECHO [WARN] YCSB libraries not found. Attempting to build... -CALL mvn -pl com.yahoo.ycsb:%MVN_PROJECT% -am package -DskipTests +CALL mvn -Psource-run -pl com.yahoo.ycsb:%MVN_PROJECT% -am package -DskipTests IF %ERRORLEVEL% NEQ 0 ( ECHO [ERROR] Error trying to build project. Exiting. GOTO exit @@ -178,6 +182,11 @@ FOR %%F IN (%YCSB_HOME%\core\target\*.jar) DO ( SET CLASSPATH=!CLASSPATH!;%%F% ) +@REM Core dependency libraries +FOR %%F IN (%YCSB_HOME%\core\target\dependency\*.jar) DO ( + SET CLASSPATH=!CLASSPATH!;%%F% +) + @REM Database conf (need to find because location is not consistent) FOR /D /R %YCSB_HOME%\%BINDING_DIR% %%F IN (*) DO ( IF "%%~nxF" == "conf" SET CLASSPATH=!CLASSPATH!;%%F% diff --git a/bin/ycsb.sh b/bin/ycsb.sh index ab899fc06f39f24b5d64c539d9df968cb663bc76..9443df6d6b97e53f10eb14f40270c545632e1d61 100755 --- a/bin/ycsb.sh +++ b/bin/ycsb.sh @@ -184,25 +184,21 @@ if $DISTRIBUTION; then # Source checkout else # Check for some basic libraries to see if the source has been built. - for f in "$YCSB_HOME"/"$BINDING_DIR"/target/*.jar ; do - + if ! ls "$YCSB_HOME"/core/target/*.jar 1> /dev/null 2>&1 || \ + ! ls "$YCSB_HOME"/"$BINDING_DIR"/target/*.jar 1>/dev/null 2>&1; then # Call mvn to build source checkout. - if [ ! -e "$f" ] ; then - if [ "$BINDING_NAME" = "basic" ] ; then - MVN_PROJECT=core - else - MVN_PROJECT="$BINDING_DIR"-binding - fi - - echo "[WARN] YCSB libraries not found. Attempting to build..." - mvn -pl com.yahoo.ycsb:"$MVN_PROJECT" -am package -DskipTests - if [ "$?" -ne 0 ] ; then - echo "[ERROR] Error trying to build project. Exiting." - exit 1; - fi + if [ "$BINDING_NAME" = "basic" ] ; then + MVN_PROJECT=core + else + MVN_PROJECT="$BINDING_DIR"-binding fi - done + echo "[WARN] YCSB libraries not found. Attempting to build..." + if mvn -Psource-run -pl com.yahoo.ycsb:"$MVN_PROJECT" -am package -DskipTests; then + echo "[ERROR] Error trying to build project. Exiting." + exit 1; + fi + fi # Core libraries for f in "$YCSB_HOME"/core/target/*.jar ; do @@ -211,13 +207,19 @@ else fi done + # Core dependency libraries + for f in "$YCSB_HOME"/core/target/dependency/*.jar ; do + if [ -r "$f" ] ; then + CLASSPATH="$CLASSPATH:$f" + fi + done + # Database conf (need to find because location is not consistent) CLASSPATH_CONF=$(find "$YCSB_HOME"/$BINDING_DIR -name "conf" | while IFS="" read -r file; do echo ":$file"; done) if [ "x$CLASSPATH_CONF" != "x" ]; then CLASSPATH="$CLASSPATH$CLASSPATH_CONF" fi - # Database libraries for f in "$YCSB_HOME"/"$BINDING_DIR"/target/*.jar ; do if [ -r "$f" ] ; then diff --git a/core/pom.xml b/core/pom.xml index 4dbef8506705cd656252f3aa57b687fff6615622..2a33ff51f310718476fb1406318cb6abbe985269 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -60,6 +60,7 @@ LICENSE file. <version>2.1.4</version> </dependency> </dependencies> + <build> <resources> <resource> @@ -68,4 +69,31 @@ LICENSE file. </resource> </resources> </build> + + <profiles> + <profile> + <!-- Build profile when running via yscb.sh or yscb.bat--> + <id>source-run</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>stage-dependencies</id> + <phase>package</phase> + <goals> + <goal>copy-dependencies</goal> + </goals> + <configuration> + <includeScope>runtime</includeScope> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project>