Il est parfois nécessaire de compiler un projet Java sur une machine dépourvue de tout outil de programmation.
Je propose sur cette page un script batch (.bat) Windows (style MS-DOS) capable de chercher la meilleure version Java disponible sur la machine et de l’utiliser pour compiler automatiquement un projet Java complet.
Le projet Java doit respecter une certaine organisation :
Ce batch nécessite au minimum Windows 2000 (XP, Vista, Win7…).
JavaCompile.bat
@echo off
echo ======== Java batch compile by Alexandre Alapetite ========
echo == 2007-09-30 / 2011-09-09 https://alexandre.alapetite.fr ==
rem Défini le chemin Java préféré
rem set JAVA_HOME=C:\Program Files\Java\jdk1.7.0
if defined JAVA_HOME (
if exist "%JAVA_HOME%\bin\javac.exe" goto okJavac
)
rem Si le chemin préféré ne marche pas, cherche la meilleure version de Java disponible
set JAVA_ROOT=%ProgramFiles%\Java\
if not exist "%JAVA_ROOT%\" set JAVA_ROOT=%ProgramFiles(x86)%\Java\
if not exist "%JAVA_ROOT%\" set JAVA_ROOT=%SystemDrive%\Java\
if not exist "%JAVA_ROOT%\" set JAVA_ROOT=%HOMEDRIVE%\Java\
if not exist "%JAVA_ROOT%\" set JAVA_ROOT=%SystemDrive%\
echo Search Java JDK...
for /F "usebackq delims==" %%f in (`dir "%JAVA_ROOT%jdk*" /B /O:-N`) do if exist "%JAVA_ROOT%%%f\bin\javac.exe" (
set JAVA_HOME="%JAVA_ROOT%%%f"
goto foundJava
)
echo Search Java JRE...
for /F "usebackq delims==" %%f in (`dir "%JAVA_ROOT%jre*" /B /O:-N`) do if exist "%JAVA_ROOT%%%f\bin\javac.exe" (
set JAVA_HOME="%JAVA_ROOT%%%f"
goto foundJava
)
:foundJava
rem Supprime les guillemets autour de JAVA_HOME, qui sont
rem nécessaire jusqu’ici pour éviter un bug avec les répertoires
rem dont le nom contient une parenthèse fermante, tel "C:\Program Files (x86)"
for /F "useback tokens=*" %%s in ('%JAVA_HOME%') do set JAVA_HOME=%%~s
if exist "%JAVA_HOME%\bin\javac.exe" goto okJavac
echo Cannot find Java compiler. Please install Java JDK or edit %%JAVA_HOME%% path.
goto end
:okJavac
echo Java path "%JAVA_HOME%"
"%JAVA_HOME%\bin\javac.exe" -version
rem Compile .\src\\*.java dans .\bin\\*.class en utilisant les librairies de .\lib\\*.jar
subst m: %0\..
rem "%0\.." est le chemin réel du fichier batch
pushd m:
cd \
echo Search java sources in .\src\...
dir src\*.java /B/S > javasrc.tmp~
if ERRORLEVEL 1 (
echo Cannot find Java source files in .\src\
goto abort
)
echo Search jar libraries in .\lib\...
if exist lib for /F "usebackq delims==" %%l in (`dir lib\*.jar /B/S`) do echo -classpath %%l >> javasrc.tmp~
echo Compile in .\bin\...
if exist bin rmdir /S /Q bin
mkdir bin
echo on
@"%JAVA_HOME%\bin\javac.exe" -d bin @javasrc.tmp~
@echo off
echo Done.
:abort
del javasrc.tmp~
popd
subst m: /d
:end
set JAVA_ROOT=
echo on
%0\..
Ce contenu est protégé par une licence
Creative Commons Paternité - Partage des Conditions Initiales à l’Identique 2.0 France “BY-SA (FR)”