@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 [-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 ^ 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