#! /bin/bash # # This script will download and install tomee # in the user home executing the command # # "exposed" variables INSTALL_DIR=~/apache-tomee TOMEE_VERSION=7.0.0-M3 TOMEE_CLASSIFIER=webprofile set -e set -u # a single stream is enough exec 1>&2 # Find Java if type -p java; then _java=java elif [ -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then _java="$JAVA_HOME/bin/java" else echo "Java not found . Please install java. Aborting" exit 1 fi # Targets JavaEE 7 so java 7 at least if [ "$_java" ]; then version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}') if [ "$version" \< "1.7" ]; then echo "JDK Version is less than 1.7 . TomEE $TOMEE_VERSION requires JDK 7+ . Aborting." exit 1 fi fi TMP_DIR="$INSTALL_DIR/install" TMP_CONF_DIR="$INSTALL_DIR/install_conf" TMP_WEBAPPS_DIR="$INSTALL_DIR/install_webapps" TMP_APPS_DIR="$INSTALL_DIR/install_apps" # save existing configuration if [ -d "$INSTALL_DIR" ]; then echo "Saving previous installation state." rm -rf "$TMP_CONF_DIR" "$TMP_WEBAPPS_DIR" "$TMP_APPS_DIR" mkdir -p "$TMP_CONF_DIR" "$TMP_WEBAPPS_DIR" "$TMP_APPS_DIR" tomee_base="$INSTALL_DIR/apache-tomee-$TOMEE_CLASSIFIER-$TOMEE_VERSION" cp -r "$tomee_base/conf/." "$TMP_CONF_DIR" cp -r "$tomee_base/webapps/." "$TMP_WEBAPPS_DIR" if [ -d "$tomee_base/apps" ]; then cp -r "$tomee_base/apps/." "$TMP_APPS_DIR" fi # remove distribution webapp to use new ones rm -rf "$TMP_WEBAPPS_DIR/ROOT" "$TMP_WEBAPPS_DIR/docs" "$TMP_WEBAPPS_DIR/manager" "$TMP_WEBAPPS_DIR/host-manager" fi # get the new binaries rm -rf "$INSTALL_DIR" "$TMP_DIR" mkdir -p "$INSTALL_DIR" "$TMP_DIR" DOWNLOAD_LINK="http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/$TOMEE_VERSION/apache-tomee-$TOMEE_VERSION-$TOMEE_CLASSIFIER.zip" DOWNLOAD_ZIP="$TMP_DIR/tomee.zip" echo "Downloading TomEE $TOMEE_VERSION from $DOWNLOAD_LINK" curl --location --fail --progress-bar $DOWNLOAD_LINK > "$DOWNLOAD_ZIP" test -f "$DOWNLOAD_ZIP" echo "Extracting TomEE $TOMEE_VERSION" unzip "$DOWNLOAD_ZIP" -d "$INSTALL_DIR" TOMEE_BASE="$INSTALL_DIR/apache-tomee-$TOMEE_CLASSIFIER-$TOMEE_VERSION" test -x "$TOMEE_BASE" # restore configuration if [ -d "$TMP_CONF_DIR" ]; then echo "Restoring previous installation state." cp -r "$TMP_CONF_DIR" "$TOMEE_BASE/conf" cp -r "$TMP_WEBAPPS_DIR" "$TOMEE_BASE/webapps" cp -r "$TMP_APPS_DIR" "$TOMEE_BASE/apps" rm -rf "$TMP_CONF_DIR" "$TMP_WEBAPPS_DIR" "$TMP_APPS_DIR" else echo "No state to restore" fi rm -rf "$TMP_DIR" echo "TomEE $TOMEE_VERSION is now installed in directory $TOMEE_BASE." # create the profile script (vars) TOMEE_PROFILE=~/.tomee.profile if [ -f "$TOMEE_PROFILE" ]; then rm -rf "$TOMEE_PROFILE" fi touch "$TOMEE_PROFILE" echo "export CATALINA_HOME="$TOMEE_BASE"" >> "$TOMEE_PROFILE" echo "export CATALINA_BASE="$TOMEE_BASE"" >> "$TOMEE_PROFILE" echo "# To add tomcat scripts to the path uncomment next line" >> "$TOMEE_PROFILE" echo "# export PATH="\$PATH:\$CATALINA_HOME/bin"" >> "$TOMEE_PROFILE" # some alternative commands, mainly to limit side effects of cygwin (wrong paths) echo "alias tomee-base='cd $TOMEE_BASE'" >> "$TOMEE_PROFILE" echo "alias tomee-run='cd $TOMEE_BASE && ./bin/catalina.sh run && cd -'" >> "$TOMEE_PROFILE" echo "alias tomee-start='cd $TOMEE_BASE && ./bin/catalina.sh start && cd -'" >> "$TOMEE_PROFILE" echo "alias tomee-stop='cd $TOMEE_BASE && ./bin/catalina.sh stop && cd -'" >> "$TOMEE_PROFILE" # make it immediate source "$TOMEE_PROFILE" # add it to the profile file whatever it is, # if they source themself it would reload env variable which is ok for f in ".bash_profile" ".bashrc" ".profile"; do if [ -f ~/$f ];then if grep "$TOMEE_PROFILE" ~/$f > /dev/null; then echo "$TOMEE_PROFILE already sourced in $f" else echo source "$TOMEE_PROFILE" >> ~/$f fi fi done # Finally dump a small getting started echo "" echo "" echo "Get started:" echo "------------" echo "" echo "" echo "start in blocking mode TomEE - located in $TOMEE_BASE" echo "me@local:~ $ tomee-run" echo "..." echo "Ctrl+C" echo "" echo "start and forget - located in $TOMEE_BASE" echo "me@local:~ $ tomee-start" echo "" echo "..." echo "And stop it" echo "me@local:~ $ tomee-stop" echo "" echo " To deploy quickly an application drop it in $TOMEE_BASE/webapps and restart." echo "You can configure TomEE in $TOMEE_BASE/conf/ folder or in ~/.openejb/system.properties." echo "" echo "You can use tomee-base command to directly go in $TOMEE_BASE" echo "" echo "Learn more on http://tomee.apache.org" echo ""