blob: bce8b2f0d449b87bc9a8192507401a42fcb7afcd [file] [log] [blame]
@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements. See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License. You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.
rem This script creates the directory structure required for running Tomcat
rem in a separate directory by pointing %CATALINA_BASE% to it. It copies the
rem conf directory from %CATALINA_HOME%, and creates empty directories for
rem bin, lib, logs, temp, webapps, and work.
rem
rem If the file %CATALINA_HOME%/bin/setenv.sh exists then it is copied to
rem the target directory as well.
rem
rem Usage: makebase <path-to-target-directory> [-w | --webapps]
setlocal
rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto EOF
:okHome
rem first arg is the target directory
set BASE_TGT=%1
if %BASE_TGT%.==. (
rem target directory not provided; exit
echo Usage: makebase ^<path-to-target-directory^>
goto :EOF
)
set COPY_WEBAPPS=false
rem parse args
for %%a in (%*) do (
if "%%~a"=="--webapps" (
set COPY_WEBAPPS=true
)
if "%%~a"=="-w" (
set COPY_WEBAPPS=true
)
)
if exist %BASE_TGT% (
rem target directory exists
echo Target directory exists
rem exit if target directory is not empty
for /F %%i in ('dir /b %BASE_TGT%\*.*') do (
echo Target directory is not empty
goto :EOF
)
) else (
rem create the target directory
mkdir %BASE_TGT%
)
rem create empty directories
for %%d in (bin, conf, lib, logs, temp, webapps, work) do (
mkdir %BASE_TGT%\%%d
)
if "%COPY_WEBAPPS%" == "true" (
echo Copying webapps
robocopy %CATALINA_HOME%\webapps %BASE_TGT%\webapps /E > nul
rem copy conf directory recursively
robocopy %CATALINA_HOME%\conf %BASE_TGT%\conf /E > nul
) else (
rem copy conf directory without subdirectories and suppress warning
robocopy %CATALINA_HOME%\conf %BASE_TGT%\conf > nul
rem create empty ROOT directory
mkdir %BASE_TGT%\webapps\ROOT
)
rem copy setenv.bat if exists
robocopy %CATALINA_HOME%\bin %BASE_TGT%\bin setenv.bat > nul
echo Created CATALINA_BASE directory at %BASE_TGT%
echo.
echo You can launch the new instance by running:
echo set CATALINA_HOME=%CATALINA_HOME%
echo set CATALINA_BASE=%BASE_TGT%
echo %%CATALINA_HOME%%/bin/catalina.bat run
echo.
echo Attention: The ports in conf\server.xml might be bound by a
echo different instance. Please review your config files
echo and update them where necessary.
echo.
:EOF