par Alexandre Alapetite le 2007-09-30 ; mise à jour 2008-05-15

Java batch compilation

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.

English

Script .bat générique de compilation Java

Structure de fichiers

Le projet Java doit respecter une certaine organisation :

.\JavaCompile.bat
Le script de compilation présenté sur cette page
.\src\
Répertoire obligatoire contenant les sources Java (.java) du projet à compiler
.\lib\
Répertoire facultatif contenant les librairies Java (.jar) utilisées par le projet
.\bin\
Répertoire de sortie créé automatiquement où ce trouveront les classes Java compilées (.class)

Description

  1. Le script va chercher dans les répertoires d’installation classiques (comme C:\Program Files\Java\) la meilleure (plus récente) version de Java disponible (à partir de Java version 5, soit 1.5.0), en donnant la priorité au JDK face au JRE.
  2. Le script fait une liste des fichiers source .java présents dans .\src\.
  3. Le script fait une liste des librairies .jar présentes dans .\lib\.
  4. Le script compile l’ensemble avec javac.exe dans .\bin\

Script

Ce batch nécessite au minimum Windows 2000 (XP, Vista, ...).

JavaCompile.bat

@echo off
echo 	== Java batch compile by Alexandre Alapetite ==
echo 	== 2008-05-15  http://alexandre.alapetite.fr ==

rem Défini le chemin Java préféré
rem set JAVA_HOME=C:\Program Files\Java\jdk1.6.0
if defined JAVA_HOME (
if exist "%JAVA_HOME%\bin\java.exe" goto foundJava
)
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=%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 not exist "%JAVA_HOME%\bin\java.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 not exist "%JAVA_HOME%\bin\java.exe" (
set JAVA_HOME=%JAVA_ROOT%%%f
goto foundJava
)
:foundJava
if exist "%JAVA_HOME%\bin\java.exe" goto okJava
echo Cannot find Java. Please install Java or edit %%JAVA_HOME%% path.
goto end
:okJava
echo Java path "%JAVA_HOME%"
"%JAVA_HOME%\bin\java.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 dir lib\*.jar /B/S > javalib.tmp~
echo Compile in .\bin\...
if exist bin rmdir /S /Q bin
mkdir bin
if exist lib (
echo on
@"%JAVA_HOME%\bin\javac.exe" -d bin -classpath @javalib.tmp~ @javasrc.tmp~
@echo off
) else (
echo on
@"%JAVA_HOME%\bin\javac.exe" -d bin @javasrc.tmp~
@echo off
)
echo Done.
:abort
del javasrc.tmp~
if exist lib del javalib.tmp~
popd
subst m: /d

:end
set JAVA_ROOT=
echo on

Historique

1.1 2008-05-15
Détection de l’emplacement réel du fichier batch avec %0\..
1.0 2007-11-25
Distribution initiale

Licence

Ce contenu est protégé par une licence Creative Commons Paternité - Partage des Conditions Initiales à l’Identique 2.0 France "BY-SA (FR)" [Creative Commons License]


Commentaires

object : Voir les commentaires

http://alexandre.alapetite.net

Retour