Bojour,
Est ce que dans Maven2, un fichier pom.xml peut avoir un 'grand-parent' ?
Comme Arborescence j'ai :
j'ai mon fichier pom.xml 'Grand parent' qui se trouve dans le dossier pFinal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 +-pFinal | +pB | +-Source | +Common +Runtime
Ensuite mon fichier pom.xml qui se trouve dans le dossier pB
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <project> <modelVersion>4.0.0</modelVersion> <groupId>com.testProject.test</groupId> <artifactId>testFinal</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> </dependencies> <modules> <module>../pB</module> </modules> </project>
Et pour finir le fichier pom.xml qui se trouve dans source/common
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <project> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.testProject.test</groupId> <artifactId>testFinal</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../pFinal/pom.xml</relativePath> </parent> <groupId>com.testProject.test</groupId> <version>1.0-SNAPSHOT</version> <artifactId>testB</artifactId> <packaging>pom</packaging> <name>Project PB</name> <url>http://maven.apache.org</url> <modules> <module>source/common</module> </modules> </project>
Ce qui est bizarre, c'est que cela fonctionne à certains points, mais pas à d'autres. Ainsi si je vais me placer dans pFinal et je fait un mvn -compile, les sources qui se trouvent dans pB/source/common sont bien compilées, pas de problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <project> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.testProject.world</groupId> <artifactId>testB</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <groupId>com.testProject.test</groupId> <version>1.0-SNAPSHOT</version> <artifactId>source-Common</artifactId> <packaging>jar</packaging> <name>Project source-common</name> <build> <sourceDirectory>./</sourceDirectory> </build> </project>
Et un mvn help:effective-pom me donne le fichier pom.xml effectif de :
-pFinal/
-pB/
-pB/source/common
Si j'essaie d'exécuter la commande mvn help:effective-pom depuis pB/, j'ai droit à l'erreur suivante :
J'obtient la même erreur quand j'effectue un mvn -compile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] Failed to resolve artifact. GroupId: com.testProject.test ArtifactId: testFinal Version: 1.0-SNAPSHOT Reason: Unable to download the artifact from any repository com.testProject.test:testFinal:pom:1.0-SNAPSHOT from the specified remote repositories: central (http://repo1.maven.org/maven2)
Ce que je ne comprends pas, c'est que la commande pour voir le pom effectif fonctionne une fois que j'ai elimié le tage <module> dans le pom.xml de pB/
Et en ce qui concerne pB/source/common, depuis ce dossier je peux faire un mvn compile, cela fonctionne sans aucun problème. Et le plus étrange, c'est que si je fait un mvn help:effective-pom, et bien j'obtient bien mon pom.xml effectif avec la dépendance Junit qui a été déclaré dans le pom grand-parent!
Mais pourquoi est ce que toute commande foire au niveau du parent intermédiaire? Je ne comprends pas pourquoi il tente de chercher le projet parent dans le repository![]()
A savoir que je me suis inspiré du livre 'Better Build with Maven'; Où ils utilisent également un pom grand parent (exemple avec Proficio)
Partager