J'ai un projet maven multi module.Lorsque j'essaie de construire un site, par ex. exécuter maven site
sur le projet parent, il ne parvient pas à résoudre la dépendance à l'un des modules. Mais si je compile juste (mvn clean compile
sur le projet parent) ou exécutez des tests (mvn clean test
sur le projet parent) il n'y a pas de problème de dépendance.
Qu'est-ce qui pourrait provoquer un tel comportement?
UPD
Version Maven
Apache Maven 3.0.2 (r1056850; 2011-01-09 02:58:10+0200)
Java version: 1.6.0_26, vendor: Sun Microsystems Inc.
Java home: c:\Program Files\Java\jdk1.6.0_26\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", Arch: "AMD64", family: "windows"
version maven-site-plugin
[DEBUG] Included: org.Apache.maven.plugins:maven-site-plugin:jar:2.0.1
Message d'erreur
[ERROR] Failed to execute goal on project myproj-client: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project myproj-client: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.Apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.Java:190)
at org.Apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.Java:104)
at org.Apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.Java:258)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:201)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:153)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:145)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:84)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:59)
at org.Apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.Java:183)
at org.Apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.Java:161)
at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:319)
at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:156)
at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:534)
at org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:196)
at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:141)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
at Java.lang.reflect.Method.invoke(Method.Java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:352)
Caused by: org.Apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.Apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.Java:156)
at org.Apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.Java:165)
... 22 more
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.Java:526)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveArtifacts(DefaultRepositorySystem.Java:304)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.Java:334)
at org.Apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.Java:150)
... 23 more
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.Java:517)
... 26 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :myproj-client
J'ai le même problème. Je n'ai pas trop fouillé dans le code source de Maven. Mais voici mon observation.
Supposons que vous n'ayez jamais mvn install
myproj-common dans votre référentiel local, ni déployé sur aucun référentiel distant. Lorsque vous exécutez mvn clean site
sur le projet parent, les choses se passent comme ceci:
mvn clean site
est exécuté sur myproj-common. Tous les résultats précédents dans myproj-common/target sont supprimés et myproj-common/target/site est généré. (Notez qu'après cette étape, ni les classes compilées ni le fichier jar packé n'existent dans myproj-common/target)mvn clean site
est exécuté sur myproj-client. Maven vérifie d'abord la dépendance de ce projet et essaie de trouver l'artefact (classes ou jar) de myproj-common aux endroits suivants: (a) myproj-common/target (b) référentiel local (3) référentiels distants.mvn site
échoue sur myproj-client, car il ne peut pas trouver l'artefact de myproj-commonCela explique pourquoi mvn clean compile site
et mvn clean package site
travaux. Ils auraient tous les deux préparé myproj-common artefacts dans son répertoire cible avant mvn site
fonctionne sur myproj-client.
Et mvn install
suivi par mvn site
fonctionne également.
Une exception spéciale est que si vous mettez quelque chose comme emma-maven-plugin dans les rapports, il compilera et instrumentera automatiquement les classes. Dans ce cas, mvn clean site
fonctionne toujours.
Je ne sais pas pourquoi Maven essaie de trouver le pot de myproj-common à l'étape 3, il semble que cela n'a rien à voir avec mvn site
. L'exception se produit assez tôt dans le noyau maven, avant d'entrer dans maven-site-plugin. Cela ne ressemble pas à un problème de maven-site-plugin mais à un comportement commun à tous les cycles de vie de maven (sauf clean je crois).
je faisais face à la même chose mais pour les struts et les dépendances Paypal_base, j'ai corrigé en faisant ce qui suit.
J'ai installé ces fichiers jar via la commande mvn suivante
mvn install: install-file -Dfile = C:\Dependencies\Paypal_base.jar\-DgroupId = Paypal -DartifactId = Paypal_base -Dversion = 0.1\-Dpackaging = jar
et
mvn install:install-file -Dfile=C:\Dependencies\struts.jar \
-DgroupId=struts -DartifactId=struts -Dversion=0.1 \
-Dpackaging=jar
(-DFile est l'emplacement du fichier jar dans votre système)
vous devez vérifier le pot et utiliser l'instruction ci-dessus si le pot n'existe pas. cela peut être utile.
Cela pourrait être un problème avec le plugin de site n'ayant pas accès au réacteur, et donc ne voyant pas que l'artefact du projet est disponible dans vos sources de projet. (Il s'agit simplement d'une hypothèse, peut-être étayée par MSITE-302 .)
Essayez d'exécuter en premier mvn install
, qui installe vos artefacts dans le référentiel local, puis exécute mvn site
.
Pour plus d'informations sur le réacteur, essayez:
Hé, pour une raison quelconque, après avoir apporté des modifications aux fichiers de module et de pom parent, le problème a disparu. Je ne sais pas exactement ce qui a été fait, mais actuellement mvn site
sur le projet parent fonctionne normalement. Malheureusement, je n'ai pas le temps d'enquêter sur les racines du problème. Mais il semble que le passage à la version 3.0 du site m'a mis sur la bonne voie. J'ai également pu exécuter le site (avant qu'il ne soit corrigé) de la manière suivante mvn compile site
, dans ce cas, il pourrait trouver une dépendance.
Il semble que maven recherche myproj-common: jar: 0.0.1-SNAPSHOT dans le référentiel.
La raison de l'échec pourrait être: maven n'est pas en mesure d'accéder aux artefacts de cliché dans le référentiel.
Pour activer les artefacts d'instantané:
veuillez vérifier votre pom.xml pour la balise snapshots dans la section référentiel.
<repository>
<name>xyz</name>
<id>repoid</id>
<url>http://x.y.z</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>