MAJ du MAKEFILE
This commit is contained in:
@@ -1,20 +1,75 @@
|
|||||||
SRC=src
|
|
||||||
BUILD=build
|
|
||||||
LIB=lib
|
|
||||||
JAR=$(LIB)/mariadb-java-client-3.5.6.jar
|
|
||||||
MAIN=fr.iutfbleau.papillon.Main
|
|
||||||
|
|
||||||
compile:
|
==== Paramètres du projet ====
|
||||||
@echo "=== Compilation du projet ==="
|
APP_NAME := papillon
|
||||||
@if not exist "$(BUILD)" mkdir "$(BUILD)"
|
MAIN_CLASS := fr.iutfbleau.papillon.Start # <-- change si ton main est ailleurs
|
||||||
javac -d $(BUILD) -classpath "$(JAR)" -sourcepath $(SRC) $(SRC)/fr/iutfbleau/papillon/Main.java
|
|
||||||
|
|
||||||
run:
|
SRC_DIR := src
|
||||||
@echo "=== Exécution du programme ==="
|
BUILD_DIR:= build
|
||||||
java -classpath "$(BUILD);$(JAR)" $(MAIN)
|
DIST_DIR := dist
|
||||||
|
RES_DIR := res
|
||||||
|
LIB_DIR := lib
|
||||||
|
|
||||||
|
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
|
||||||
|
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:
|
clean:
|
||||||
@echo "=== Nettoyage du dossier build ==="
|
rm -rf $(BUILD_DIR) $(DIST_DIR) MANIFEST.MF
|
||||||
@if exist "$(BUILD)" rmdir /s /q "$(BUILD)"
|
|
||||||
|
|
||||||
rebuild: clean compile
|
rebuild: clean all
|
||||||
|
|
||||||
|
doc:
|
||||||
|
javadoc -d doc/ src/*.java
|
||||||
Reference in New Issue
Block a user