Bonjour à tous,

J'aimerais avoir l'avis de la communauté concernant le fonctionnement de Maven dans un cas particulier.

Considérons un projet Maven classique (j'ai volontairement réduit l'ensemble des classes au minimum) :

Dans le répertoire source src/main/java, j'ai un package com.example et 2 classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
package com.example;
 
import com.example.Class2.Interface1;
 
public class Class1 implements Interface1 {
 
    public interface Interface2 {
 
    }
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
package com.example;
 
import com.example.Class1.Interface2;
 
public class Class2 implements Interface2 {
 
    public interface Interface1 {
 
    }
}
Les 2 classes sont fortement liées puisque chacune définie l'interface de l'autre.

Dans le répertoire source src/test/java, j'ai également un package com.example et 1 classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
package com.example;
 
import com.example.Class1.Interface2;
 
public class MockClass2 implements Interface2 {
 
}
Si la compilation sous Eclipse ne pose aucun problème (l'exécution non plus si on implémente quelques méthodes), en revanche, sous Maven, j'obtiens le message suivant :
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
C:\Home\Helios\eclipseV4\workspace\CyclicTest\src\test\java\com\example\MockClass2.java:[6,35] cyclic inheritance involving com.example.Class1.Interface2
Message d'autant plus étonnant que si je copie MockClass2 dans le répertoire source src/main/java, la compilation se passe correctement.

Quelqu'un a-t-il une idée pour expliquer ce comportement ?

Merci.