8 votes

Le fichier d'installation Maven ne génère pas de pom.xml

J'ai installé des bocaux de tierces parties dans mon référentiel en utilisant la commande suivante :

mvn install:install-file -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar -DgroupId=nifty-gui -DartifactId=nifty-gui -Dversion=1.0 -Dpackaging=jar

Cependant, une fois que j'ai fait mvn compile, maven se plaint qu'il n'y a pas de fichier pom dans le dépôt et tente de le télécharger, mais ne peut pas parce qu'il n'est pas publié dans un dépôt distant.

Voici le message exact de maven :

Downloading: http://repo1.maven.org/maven2/nifty-gui/nifty-gui/1.0/nifty-gui-1.0.pom
[INFO] Unable to find resource 'nifty-gui:nifty-gui:pom:1.0' in repository central (http://repo1.maven.org/maven2)

Alors comment faire pour que maven génère un fichier pom pour ce jar et le mette dans mon dépôt local ?

16voto

SingleShot Points 9258

C'est vous qui le lui demandez ! :-)

mvn install:install-file
  -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar
  -DgroupId=nifty-gui
  -DartifactId=nifty-gui
  -Dversion=1.0
  -Dpackaging=jar
  -DgeneratePom=true

(Commande placée sur plusieurs lignes pour que vous puissiez facilement voir le dernier paramètre).

Sympa, hein ? À l'avenir, vous pourrez consulter la documentation d'un plug-in, voir ses objectifs et tous les paramètres qu'il accepte. Par exemple, l'objectif du fichier d'installation .

Editer :

En ce qui concerne la question du comportement par défaut de l'indicateur generatePom, la documentation indique que la valeur par défaut est true, et le code semble le supporter. Cependant, en utilisant Maven 2.0.9 avec la version 2.2 de maven-install-plugin (les deux versions sont légèrement dépassées), il ne génère pas de POM. Donc, peut-être que l'incrémentation de la (des) version(s) permettra à la valeur par défaut de fonctionner.

> touch DeleteMe.jar
> mvn install:install-file -DgroupId=Delete -DartifactId=Me -Dversion=0.0.0 -Dpackaging=jar -Dfile=DeleteMe.jar
...
[INFO] BUILD SUCCESSFUL
...
> ls ~/.m2/repository/Delete/Me/0.0.0/
Me-0.0.0.jar

(Pas de POM générée.)

2voto

Pascal Thivent Points 295221

En install:fichier-install a un paramètre optionnel generatePom (depuis la version 2.1) qui permet de :

Générer un POM minimal pour l'application si aucun n'est fourni via le paramètre paramètre pomFile .
D true s'il n'y a pas encore de POM existant dans dans le référentiel local.

Ce paramètre est fixé par défaut à true desde version 2.3 (et false en 2.1, 2.2). Ainsi, si vous utilisez une version du plugin d'installation antérieure à la 2.3, vous devrez passer le paramètre dans la commande.

Juste au cas où, la syntaxe pour utiliser explicitement la version 2.3 du plugin d'installation serait :

mvn org.apache.maven.plugins:maven-install-plugin:2.3:install-file \
    -Dfile=/home/anotherCoder/Downloads/nifty-1.0.jar -DgroupId=nifty-gui \
    -DartifactId=nifty-gui -Dversion=1.0 -Dpackaging=jar

0voto

Janvo Points 226

J'ai eu le même problème que vous, je pense, j'avais un shell script utilisant l'objectif install:install-file comme ceci :

mvn -o install:install-file -e 
  -DgroupId=org.jfree.jcommon 
  -DartifactId=jcommon
  -Dversion=1.0.15
  -Dpackaging=jar
  -Dfile=jcommon-1.0.15.jar 

Quelques points à noter :

artifactId ne peut pas contenir '.' ... je ne sais pas trop pourquoi, mais l'installation échouerait si cela contenait '.'

L'exécution de la commande ci-dessus n'a généré qu'un pom avec maven 3.x. En ajoutant les arguments suivants, j'ai pu obtenir la copie des jar :

-DgeneratePom=true -DupdateReleaseInfo=true

-1voto

void256 Points 1

Si votre bibliothèque tierce est vraiment "nifty gui", tout ce que vous avez à faire est d'ajouter le dépôt maven nifty à votre pom.xml :

<repositories>
  <repository>
    <id>nifty-maven-repo.sourceforge.net</id>
    <url>http://nifty-gui.sourceforge.net/nifty-maven-repo</url>
  </repository>
</repositories>

et votre projet maven sera automatiquement téléchargé nifty :D

PS : Je sais que ce n'était pas votre question, mais cela pourrait vous aider à réaliser une intégration intéressante :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X