J'ai commencé à convertir mon projet en maven parce que je devais utiliser une bibliothèque qui était distribuée sous forme binaire sur maven uniquement, mais après m'être cogné la tête contre le mur pendant trop longtemps, j'ai décidé de ne plus me blesser et d'utiliser Fourmi. J'aimerais simplement que maven télécharge le pot et toutes ses dépendances transitives dans un répertoire de mon choix afin que je puisse simplement les archiver dans mon SCM comme d'habitude, et redevenir un développeur heureux.
Des idées comment faire cela facilement?
Le plugin maven dependency peut potentiellement résoudre votre problème.
Si vous avez une pom
avec toutes vos dépendances de projet spécifiées, tout ce que vous avez à faire est de lancer
mvn dependency:copy-dependencies
et vous trouverez le dossier target/dependencies
rempli de toutes les dépendances, y compris transitive.
Ajout de réponse de Gustavo en bas : Pour télécharger la dépendance sources, vous pouvez utiliser
mvn dependency:copy-dependencies -Dclassifier=sources
Créez un fichier ivy.xml pour répertorier les dépendances de votre projet:
<ivy-module version="2.0">
<info organisation="org.demo" module="demo"/>
<configurations defaultconfmapping="default"/>
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.6"/>
..
</dependencies>
</ivy-module>
Le téléchargement de ces pots et de leurs dépendances transitives peut maintenant être effectué de deux manières.
Ivy peut être exécuté en tant que programme de ligne de commande . L'exemple suivant téléchargera dans un répertoire "lib" local:
Java -jar ivy-2.2.0.jar -ivy ivy.xml -retrieve "lib/[artifact].[ext]"
ivy est mieux utilisé lorsqu'il est intégré à votre build ANT. L'exemple de cible suivant télécharge les fichiers JAR dans un répertoire lib local et génère un rapport HTML pour l'analyse des dépendances.
<target name="retrieve" description="Retrieve dependencies locally">
<ivy:retrieve pattern="${lib.dir}/[artifact].[ext]"/>
<ivy:report todir="${report.dir}" graph="false"/>
</target>
Basé sur @Raghuram answer, je trouve un tutoriel sur Copier les dépendances du projet , Just:
Ouvrez votre fichier de projet pom.xml
et trouvez ceci:
<project>
[...]
<build>
<plugins>
...
</plugins>
</build>
[...]
</project>
Puis remplacez le <plugins> ... </plugins>
par:
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Et appelez maven dans la ligne de commande mvn dependency:copy-dependencies
Une fois terminé, il créera le dossier target/dependency
dans toutes les dépendances de la jar
sur le répertoire en cours où réside le pom.xml
.
J'ai enfin compris comment utiliser Maven. Depuis Eclipse, créez un nouveau projet Maven.
Téléchargez Maven, extrayez l'archive, ajoutez le dossier /bin
au chemin.
Validez l'installation depuis la ligne de commande en exécutant mvn -v
(imprimera la version et le chemin d'installation Java)
Passez au dossier racine du projet (où se trouve pom.xml
) et exécutez:
mvn dependency:copy-dependencies
Tous les fichiers jar sont téléchargés dans /target/dependency
.
Pour définir un autre répertoire de sortie:
mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"
Il est maintenant possible de réutiliser ce projet Maven pour tous les téléchargements de dépendance en modifiant le fichier pom.xml.
Ajouter des fichiers JAR au projet Java par chemin de construction -> configurer le chemin de construction -> bibliothèques -> ajouter des JAR ..
J'ai trouvé la prochaine commande
mvn dependency:copy-dependencies -Dclassifier=sources
ici maven.Apache.org
Vérifiez si vous avez des fichiers de configuration dans le répertoire ${MAVEN_HOME}/conf
tels que settings.xml
. Ces fichiers remplacent les paramètres du dossier .m2
et, à cause de cela, le dossier du référentiel à partir de .m2
risque de ne pas être visible ou ignoré.