Es wurde versucht, eine Java Bibliothek zum lokalen Maven-Repository hinzuzufügen, indem eine Neuinstallation von Apache Maven 3.1.0 mit Java 1.7 durchgeführt wurde. So wurde die Archivdatei Java hinzugefügt:
mvn install:install-file \
-DgroupId=net.sourceforge.ant4x \
-DartifactId=ant4x \
-Dversion=0.3.0 \
-Dfile=ant4x-0.3.0.jar \
-Dpackaging=jar
Dadurch wurde die folgende Verzeichnisstruktur erstellt:
$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
Die Datei pom.xml
Des Projekts verweist wie folgt auf das abhängige Projekt (der Baum oben):
<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>
Nach dem Ausführen von mvn compile
Wurde der folgende Fehler zurückgegeben ( vollständige Anmeldung bei 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]
Die Dokumentation weist auf eine Reihe von Problemen hin, die vorliegen könnten, jedoch scheint keines davon zutreffend zu sein.
Ich habe Folgendes gemäß der Dokumentation versucht:
cp /opt/Apache-maven-3.1.0/conf/settings.xml $ HOME/.m2 /.
$ {user.home} /. m2/repository
Ich habe auch die folgenden Befehle ausprobiert:
mvn -U
mvn clear -U
Ich habe versucht, Maven 3.0.5 zu verwenden, aber das ist auch fehlgeschlagen.
Wie können Sie Maven zwingen, die lokale Version der Bibliothek zu verwenden, anstatt nach einer Bibliothek zu suchen, die noch nicht zum Herunterladen verfügbar ist?
Verwandte Fragen und Informationen, die das Problem nicht behoben haben:
Veränderung:
<!-- ANT4X -->
<dependency>
<groupId>net.sourceforge</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
Zu:
<!-- ANT4X -->
<dependency>
<groupId>net.sourceforge.ant4x</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
Der groupId
von net.sourceforge
war falsch. Der richtige Wert ist net.sourceforge.ant4x
.
Der Anwendungsbereich <scope>provided</scope>
gibt Ihnen die Möglichkeit mitzuteilen, dass die JAR-Datei zur Laufzeit verfügbar sein würde, also bündeln Sie sie nicht. Es bedeutet nicht, dass Sie es zur Kompilierungszeit nicht benötigen, daher würde maven versuchen, das herunterzuladen.
Jetzt denke ich, dass die unten genannten Maven-Artefakte überhaupt nicht existieren. Ich versuche Google zu durchsuchen, kann aber nicht finden. Daher bekommen Sie dieses Problem.
Ändern Sie groupId
in <groupId>net.sourceforge.ant4x</groupId>
, um das neueste Glas zu erhalten.
<dependency>
<groupId>net.sourceforge.ant4x</groupId>
<artifactId>ant4x</artifactId>
<version>${net.sourceforge.ant4x-version}</version>
<scope>provided</scope>
</dependency>
Eine andere Lösung für dieses Problem ist:
Dabei ist http: // localhost/repo Ihre lokale Repo-URL:
<repositories>
<repository>
<id>wmc-central</id>
<url>http://localhost/repo</url>
</repository>
<-- Other repository config ... -->
</repositories>