modification du makefile pour séparer la compilation du jeu et des test et automatiser l'installation des dépendance #27
47
Makefile
47
Makefile
@@ -1,5 +1,7 @@
|
|||||||
# === Environnements ===
|
# === Environnements ===
|
||||||
TEST_ENV = "bin:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar"
|
JUNIT_JAR = /usr/share/java/junit.jar
|
||||||
|
HAMCREST_JAR = /usr/share/java/hamcrest-core.jar
|
||||||
|
TEST_ENV = "bin:$(JUNIT_JAR):$(HAMCREST_JAR)"
|
||||||
|
|
||||||
# === Répertoires ===
|
# === Répertoires ===
|
||||||
SRC_DIR = fr
|
SRC_DIR = fr
|
||||||
@@ -9,8 +11,11 @@ BIN_DIR = bin
|
|||||||
RES_SRC = fr/iut_fbleau/Res
|
RES_SRC = fr/iut_fbleau/Res
|
||||||
RES_BIN = bin/fr/iut_fbleau/Res
|
RES_BIN = bin/fr/iut_fbleau/Res
|
||||||
|
|
||||||
# === Recherche automatique des fichiers .java dans tous les sous-dossiers ===
|
# === Recherche automatique des fichiers .java ===
|
||||||
SOURCES := $(shell find $(SRC_DIR) -name "*.java")
|
# SOURCES : uniquement le code de l'application (sans les fichiers de tests)
|
||||||
|
SOURCES := $(shell find $(SRC_DIR) -name "*.java" -not -path "$(SRC_DIR)/iut_fbleau/Tests/*")
|
||||||
|
# TEST_SOURCES : uniquement les fichiers de tests
|
||||||
|
TEST_SOURCES := $(shell find $(SRC_DIR)/iut_fbleau/Tests -name "*.java" 2>/dev/null)
|
||||||
|
|
||||||
# === Classe principale ===
|
# === Classe principale ===
|
||||||
MAIN_CLASS = fr.iut_fbleau.Avalam.Main
|
MAIN_CLASS = fr.iut_fbleau.Avalam.Main
|
||||||
@@ -20,7 +25,10 @@ TEST_CLASS = fr.iut_fbleau.Tests.AvalamBoardTest
|
|||||||
|
|
||||||
# === Commandes Java ===
|
# === Commandes Java ===
|
||||||
JC = javac
|
JC = javac
|
||||||
JCFLAGS = -d $(BIN_DIR) -cp $(TEST_ENV)
|
# Compilation normale (application uniquement)
|
||||||
|
JCFLAGS = -d $(BIN_DIR)
|
||||||
|
# Compilation des tests (application + JUnit)
|
||||||
|
JCFLAGS_TESTS = -d $(BIN_DIR) -cp $(TEST_ENV)
|
||||||
|
|
||||||
JAVA = java
|
JAVA = java
|
||||||
JAVAFLAGS = -cp $(BIN_DIR)
|
JAVAFLAGS = -cp $(BIN_DIR)
|
||||||
@@ -38,6 +46,35 @@ compile:
|
|||||||
@mkdir -p $(BIN_DIR)
|
@mkdir -p $(BIN_DIR)
|
||||||
@$(JC) $(JCFLAGS) $(SOURCES)
|
@$(JC) $(JCFLAGS) $(SOURCES)
|
||||||
|
|
||||||
|
compile_tests: compile
|
||||||
|
@echo "===> Compilation des tests..."
|
||||||
|
@mkdir -p $(BIN_DIR)
|
||||||
|
ifneq ($(TEST_SOURCES),)
|
||||||
|
@$(JC) $(JCFLAGS_TESTS) $(TEST_SOURCES)
|
||||||
|
else
|
||||||
|
@echo "Aucun fichier de test trouvé dans $(SRC_DIR)/iut_fbleau/Tests"
|
||||||
|
endif
|
||||||
|
|
||||||
|
# === Vérification / installation des dépendances de tests ===
|
||||||
|
check_test_deps:
|
||||||
|
@echo "===> Vérification des dépendances de tests (JUnit / Hamcrest)..."
|
||||||
|
@if [ ! -f "$(JUNIT_JAR)" ] || [ ! -f "$(HAMCREST_JAR)" ]; then \
|
||||||
|
echo " JUnit ou Hamcrest manquant, tentative d'installation (sudo requis)..."; \
|
||||||
|
if command -v sudo >/dev/null 2>&1; then \
|
||||||
|
sudo apt-get update && sudo apt-get install -y junit4 libhamcrest-java; \
|
||||||
|
else \
|
||||||
|
apt-get update && apt-get install -y junit4 libhamcrest-java; \
|
||||||
|
fi; \
|
||||||
|
if [ ! -f "$(JUNIT_JAR)" ] || [ ! -f "$(HAMCREST_JAR)" ]; then \
|
||||||
|
echo "✖ Impossible de trouver/installer $(JUNIT_JAR) ou $(HAMCREST_JAR). Vérifiez manuellement vos paquets JUnit/Hamcrest."; \
|
||||||
|
exit 1; \
|
||||||
|
else \
|
||||||
|
echo "✔ Dépendances de tests installées."; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
echo "✔ JUnit et Hamcrest trouvés."; \
|
||||||
|
fi
|
||||||
|
|
||||||
# === Copie des ressources (.txt) dans bin ===
|
# === Copie des ressources (.txt) dans bin ===
|
||||||
resources:
|
resources:
|
||||||
@echo "===> Copie des ressources..."
|
@echo "===> Copie des ressources..."
|
||||||
@@ -51,7 +88,7 @@ run:
|
|||||||
@$(JAVA) $(JAVAFLAGS) $(MAIN_CLASS)
|
@$(JAVA) $(JAVAFLAGS) $(MAIN_CLASS)
|
||||||
|
|
||||||
# === Tests ===
|
# === Tests ===
|
||||||
test:
|
test: check_test_deps compile_tests
|
||||||
@echo "===> Lancement des tests..."
|
@echo "===> Lancement des tests..."
|
||||||
@$(JAVA) $(JAVAFLAGS_TESTS) org.junit.runner.JUnitCore $(TEST_CLASS)
|
@$(JAVA) $(JAVAFLAGS_TESTS) org.junit.runner.JUnitCore $(TEST_CLASS)
|
||||||
@echo "... Fin des tests."
|
@echo "... Fin des tests."
|
||||||
|
|||||||
32
README.md
32
README.md
@@ -12,37 +12,55 @@ Dans un second temps, nous développerons des bots les plus efficaces possible,
|
|||||||
|
|
||||||
Le jeu de notre groupe est **Avalam**.
|
Le jeu de notre groupe est **Avalam**.
|
||||||
|
|
||||||
## Compilation et exécution
|
## Compilation, exécution et tests
|
||||||
|
|
||||||
### Compilation
|
### Compilation (sans tests)
|
||||||
```bash
|
```bash
|
||||||
make build
|
make build
|
||||||
```
|
```
|
||||||
|
ou simplement :
|
||||||
### Tests
|
|
||||||
```bash
|
```bash
|
||||||
make test
|
make
|
||||||
```
|
```
|
||||||
|
Cette commande :
|
||||||
|
- compile uniquement le code de l'application (sans les fichiers du dossier `fr/iut_fbleau/Tests`) ;
|
||||||
|
- copie les ressources dans `bin/`.
|
||||||
|
|
||||||
### Exécution
|
### Exécution du jeu
|
||||||
```bash
|
```bash
|
||||||
make run
|
make run
|
||||||
```
|
```
|
||||||
|
Lance la fenêtre de jeu Avalam après compilation.
|
||||||
|
|
||||||
|
### Lancer les tests
|
||||||
|
```bash
|
||||||
|
make test
|
||||||
|
```
|
||||||
|
Cette commande :
|
||||||
|
- vérifie d'abord la présence de **JUnit** et **Hamcrest** dans `/usr/share/java` ;
|
||||||
|
- si nécessaire, tente de les installer automatiquement via `apt-get` (sudo requis sur Debian/Ubuntu) ;
|
||||||
|
- compile ensuite les fichiers de tests (`fr/iut_fbleau/Tests`) ;
|
||||||
|
- lance enfin la suite de tests JUnit (`AvalamBoardTest`).
|
||||||
|
|
||||||
|
Si l'installation automatique échoue (autre OS, pas de droits sudo, pas d'accès réseau, etc.), un message l'indiquera et il faudra installer JUnit/Hamcrest manuellement.
|
||||||
|
|
||||||
### Nettoyage
|
### Nettoyage
|
||||||
```bash
|
```bash
|
||||||
make clean
|
make clean
|
||||||
```
|
```
|
||||||
|
Supprime le répertoire `bin/` (classes compilées et ressources copiées).
|
||||||
|
|
||||||
### Recompiler et exécuter
|
### Recompiler puis exécuter
|
||||||
```bash
|
```bash
|
||||||
make re
|
make re
|
||||||
```
|
```
|
||||||
|
Équivaut à `make clean` puis `make build` puis `make run`.
|
||||||
|
|
||||||
### Générer la Javadoc
|
### Générer la Javadoc
|
||||||
```bash
|
```bash
|
||||||
make javadoc
|
make javadoc
|
||||||
```
|
```
|
||||||
|
Génère la documentation dans le dossier `doc/`.
|
||||||
|
|
||||||
## Architecture du projet
|
## Architecture du projet
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user