maj
This commit is contained in:
@@ -1,75 +1,56 @@
|
||||
# === Configuration ===
|
||||
SRC_DIR := src/fr/iutfbleau/papillon
|
||||
BUILD_DIR := build
|
||||
DOC_DIR := doc
|
||||
LIB_DIR := lib
|
||||
LIB := $(LIB_DIR)/mariadb
|
||||
MAIN_CLASS := fr.iutfbleau.papillon.Start
|
||||
|
||||
==== Paramètres du projet ====
|
||||
APP_NAME := papillon
|
||||
MAIN_CLASS := fr.iutfbleau.papillon.Start # <-- change si ton main est ailleurs
|
||||
# === Commandes principales ===
|
||||
|
||||
SRC_DIR := src
|
||||
BUILD_DIR:= build
|
||||
DIST_DIR := dist
|
||||
RES_DIR := res
|
||||
LIB_DIR := lib
|
||||
# Compilation du projet
|
||||
compile:
|
||||
@echo === Compilation du projet ===
|
||||
javac -encoding UTF-8 -cp "$(LIB)" -d $(BUILD_DIR) $(SRC_DIR)/*.java
|
||||
@echo Compilation terminee !
|
||||
|
||||
Driver MariaDB
|
||||
DRIVER_JAR := $(LIB_DIR)/mariadb
|
||||
|
||||
Séparateur de classpath selon OS
|
||||
ifeq ($(OS),Windows_NT)
|
||||
SEP := ;
|
||||
else
|
||||
SEP := :
|
||||
endif
|
||||
|
||||
Liste des sources et classes correspondantes
|
||||
SOURCES := $(shell find $(SRC_DIR) -name ".java")
|
||||
CLASSES := $(SOURCES:$(SRC_DIR)/%.java=$(BUILD_DIR)/%.class)
|
||||
|
||||
==== Règles ====
|
||||
.PHONY: all compile jar run run-jar clean rebuild
|
||||
|
||||
all: compile
|
||||
|
||||
$(BUILD_DIR):
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
|
||||
$(DIST_DIR):
|
||||
@mkdir -p $(DIST_DIR)
|
||||
|
||||
Compilation de chaque .java vers build/ en respectant les packages
|
||||
$(BUILD_DIR)/%.class: $(SRC_DIR)/%.java | $(BUILD_DIR)
|
||||
@mkdir -p $(dir $@)
|
||||
javac -classpath "$(DRIVER_JAR)" -d $(BUILD_DIR) $<
|
||||
|
||||
Compile tout + copie des ressources si dossier res/ existe
|
||||
compile: $(CLASSES)
|
||||
@if [ -d "$(RES_DIR)" ]; then \
|
||||
echo "Copie des ressources..."; \
|
||||
cp -r $(RES_DIR)/ $(BUILD_DIR)/; \
|
||||
fi
|
||||
@echo "==> Compilation OK"
|
||||
|
||||
MANIFEST avec Main-Class et Class-Path (référence le driver)
|
||||
MANIFEST.MF:
|
||||
@echo "Manifest-Version: 1.0" > MANIFEST.MF
|
||||
@echo "Main-Class: $(MAIN_CLASS)" >> MANIFEST.MF
|
||||
@echo "Class-Path: ../$(DRIVER_JAR)" >> MANIFEST.MF
|
||||
|
||||
Construction du JAR
|
||||
jar: compile MANIFEST.MF | $(DIST_DIR)
|
||||
jar cfm $(DIST_DIR)/$(APP_NAME).jar MANIFEST.MF -C $(BUILD_DIR) .
|
||||
@echo "==> JAR créé: $(DIST_DIR)/$(APP_NAME).jar"
|
||||
|
||||
Exécution directe depuis build/ + driver sur le classpath
|
||||
# Exécution du programme
|
||||
run: compile
|
||||
java -classpath "$(BUILD_DIR)$(SEP)$(DRIVER_JAR)" $(MAIN_CLASS)
|
||||
|
||||
Exécution du .jar (le MANIFEST référence le driver dans lib/)
|
||||
run-jar: jar
|
||||
java -jar "$(DIST_DIR)/$(APP_NAME).jar"
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR) $(DIST_DIR) MANIFEST.MF
|
||||
|
||||
rebuild: clean all
|
||||
@echo === Execution du programme ===
|
||||
java -cp "$(BUILD_DIR);$(LIB)" $(MAIN_CLASS)
|
||||
|
||||
# Génération de la documentation Javadoc
|
||||
doc:
|
||||
javadoc -d doc/ src/*.java
|
||||
@echo === Generation de la documentation Javadoc ===
|
||||
javadoc -d $(DOC_DIR) -encoding UTF-8 -cp "$(LIB)" $(SRC_DIR)/*.java
|
||||
@echo Documentation generee dans le dossier $(DOC_DIR)
|
||||
|
||||
# === Création du JAR ===
|
||||
jar: compile
|
||||
@echo === Creation du fichier JAR ===
|
||||
echo Main-Class: $(MAIN_CLASS) > manifest.txt
|
||||
jar cfm $(JAR_FILE) manifest.txt -C $(BUILD_DIR) .
|
||||
@echo Archive JAR creee : $(JAR_FILE)
|
||||
@del manifest.txt 2>nul || true
|
||||
|
||||
# === Exécution du JAR ===
|
||||
run-jar: jar
|
||||
@echo === Execution du JAR ===
|
||||
java -cp "$(JAR_FILE);$(LIB)" -jar $(JAR_FILE)
|
||||
|
||||
# Nettoyage du dossier build
|
||||
clean:
|
||||
@echo === Nettoyage des fichiers compiles ===
|
||||
@rmdir /s /q $(BUILD_DIR) 2>nul || true
|
||||
@mkdir $(BUILD_DIR)
|
||||
@echo Build nettoye.
|
||||
|
||||
# Nettoyage complet (build + doc)
|
||||
reset: clean
|
||||
@echo === Suppression de la documentation ===
|
||||
@rmdir /s /q $(DOC_DIR) 2>nul || true
|
||||
@mkdir $(DOC_DIR)
|
||||
@echo Tout a ete nettoye.
|
||||
|
||||
# Compilation + exécution directe
|
||||
all: compile run
|
||||
|
||||
Reference in New Issue
Block a user