Essayez d'ajouter une bibliothèque Java au référentiel Maven local à l'aide d'une nouvelle installation d'Apache Maven 3.1.0, avec Java 1.7. Voici comment le fichier d'archive Java a été ajouté:
mvn install:install-file \
-DgroupId=net.sourceforge.ant4x \
-DartifactId=ant4x \
-Dversion=0.3.0 \
-Dfile=ant4x-0.3.0.jar \
-Dpackaging=jar
Cela a créé la structure de répertoire suivante:
$HOME/.m2/repository/net/sourceforge/ant4x/
├── 0.3.0
│ ├── ant4x-0.3.0.jar.lastUpdated
│ └── ant4x-0.3.0.pom.lastUpdated
└── ant4x
├── 0.3.0
│ ├── ant4x-0.3.0.jar
│ ├── ant4x-0.3.0.pom
│ └── _remote.repositories
└── maven-metadata-local.xml
Le fichier pom.xml
Du projet référence le projet dépendant (l'arborescence ci-dessus) comme suit:
<properties>
<Java-version>1.5</Java-version>
<net.sourceforge.ant4x-version>0.3.0</net.sourceforge.ant4x-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<dependency>
<groupId>net.sourceforge</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
Après avoir exécuté mvn compile
, L'erreur suivante a été renvoyée ( journal complet sur Pastebin ):
[ERROR] Failed to execute goal on project ant4docbook: Could not resolve dependencies for project net.sourceforge:ant4docbook:jar:0.6-SNAPSHOT: Failure to find net.sourceforge:ant4x:jar:0.3.0 in http://repo.maven.Apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
La documentation note un certain nombre de problèmes qui pourraient être présents, mais aucun ne semble s'appliquer.
J'ai essayé ce qui suit, selon la documentation:
cp /opt/Apache-maven-3.1.0/conf/settings.xml $ HOME/.m2 /.
$ {user.home} /. m2/repository
J'ai aussi essayé les commandes suivantes:
mvn -U
mvn clear -U
J'ai essayé d'utiliser Maven 3.0.5, mais cela a aussi échoué.
Comment forcer Maven à utiliser la version locale de la bibliothèque plutôt que d'essayer de chercher une bibliothèque qui n'est pas encore disponible au téléchargement?
Questions connexes et informations n'ayant pas résolu le problème:
Changement:
<!-- ANT4X -->
<dependency>
<groupId>net.sourceforge</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
À:
<!-- ANT4X -->
<dependency>
<groupId>net.sourceforge.ant4x</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
Le groupId
de net.sourceforge
était inexact. La valeur correcte est net.sourceforge.ant4x
.
Le viseur <scope>provided</scope>
vous donne l’occasion de dire que le fichier jar serait disponible au moment de l’exécution, ne le regroupez donc pas. Cela ne veut pas dire que vous n'en avez pas besoin au moment de la compilation, alors Maven essaierait de le télécharger.
Maintenant, je pense, les artefacts Maven ci-dessous n'existent pas du tout. J'essaye de chercher sur google, mais je ne parviens pas à trouver. Par conséquent, vous obtenez ce problème.
Remplacez groupId
par <groupId>net.sourceforge.ant4x</groupId>
pour obtenir le dernier pot.
<dependency>
<groupId>net.sourceforge.ant4x</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
Une autre solution à ce problème est la suivante:
Où http: // localhost/repo est votre URL de dépôt locale:
<repositories>
<repository>
<id>wmc-central</id>
<url>http://localhost/repo</url>
</repository>
<-- Other repository config ... -->
</repositories>