2013-09-11 6 views
33

Hintergrund

Der Versuch, eine Java-Bibliothek mit dem lokalen Maven-Repository hinzuzufügen ein sauberes von Apache Maven 3.1.0, mit Java 1.7 installieren verwenden. Hier ist, wie die Java-Archivdatei hinzugefügt wurde:Das POM für Projekt fehlt, wird keine Abhängigkeitsinformationen

mvn install:install-file \ 
    -DgroupId=net.sourceforge.ant4x \ 
    -DartifactId=ant4x \ 
    -Dversion=0.3.0 \ 
    -Dfile=ant4x-0.3.0.jar \ 
    -Dpackaging=jar 

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 

Das pom.xml-Datei des Projektes verweist auf das abhängige Projekt (der Baum oben) wie folgt:

<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> 

Problem

Nach der Ausführung mvn compile, wurde der folgende Fehler zurückgegeben (full log on 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 documentation Notizen eine Reihe von Fragen, die vorhanden sein könnten, aber keiner von ihnen scheinen zu übernehmen.

Ideen

habe ich versucht, die folgende, gemäß der Dokumentation:

  1. Kopieren Standardeinstellung Home-Verzeichnis des Benutzers für Maven:
     
    cp /opt/apache-maven-3.1.0/conf/settings.xml $HOME/.m2/.
  2. Bearbeiten des settings.xml-Datei des Benutzers.
  3. Aktualisieren Sie den Wert für das lokale Repository:
     
    ${user.home}/.m2/repository
  4. Speichern Sie die Datei.

Ich habe auch versucht die folgenden Befehle:

mvn -U 
mvn clear -U 

I 3.0.5 mit Maven versucht, aber das scheiterte auch.

Frage

Wie Sie Maven zwingen, die lokale Version der Bibliothek zu verwenden, anstatt zu versuchen, eine Bibliothek zu suchen, die zum Download noch nicht verfügbar ist?

Verwandte

Verwandte Fragen und Informationen, die das Problem nicht behoben wurde:

Antwort

14

Wechsel:

<!-- ANT4X --> 
<dependency> 
    <groupId>net.sourceforge</groupId> 
    <artifactId>ant4x</artifactId> 
    <version>${net.sourceforge.ant4x-version}</version> 
    <scope>provided</scope> 
</dependency> 

An:

<!-- ANT4X --> 
<dependency> 
    <groupId>net.sourceforge.ant4x</groupId> 
    <artifactId>ant4x</artifactId> 
    <version>${net.sourceforge.ant4x-version}</version> 
    <scope>provided</scope> 
</dependency> 

Die groupId von net.sourceforge war nicht korrekt. Der korrekte Wert ist net.sourceforge.ant4x.

+0

Ich konnte kein solches Artefakt mit Maven registriert finden. Ich habe versucht, dieses meiner Mavne hinzuzufügen, es funktioniert immer noch nicht. Ausnahme: Fehlendes Artefakt net.sourceforge.ant4x: ant4x: jar: 0.3.0: bereitgestellt. Bist du sicher? – gyan

+0

Es ist, weil Maven versuchen, jedes Glas entweder im zentralen Repo (verfügbar im Internet) oder vom lokalen Repo (im Pom-Profil konfiguriert) zu finden. Auf dem gleichen Ort sollte dieser Krug vorhanden sein oder er könnte mit dem Befehl ** maven: install ** installiert werden. – gyan

2

Der Bereich <scope>provided</scope> gibt Ihnen die Möglichkeit zu sagen, dass das Jar zur Laufzeit verfügbar wäre, also bündeln Sie es nicht. Es bedeutet nicht, dass Sie es zur Kompilierungszeit nicht benötigen, daher würde Maven versuchen, das herunterzuladen.

Jetzt denke ich, die unten Maven Artefakt überhaupt nicht existieren. Ich versuche google zu suchen, finde aber nicht. Daher erhalten Sie dieses Problem.

Ändern Sie groupId zu <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> 

EDIT:

Die Lösung für dieses Problem, eine der Lösung ist

  1. Ihre eigenen Maven Repo starten.
  2. herunterladen Sie das Glas
  3. Installieren Sie das Glas in das Repository.
  4. einen Code in Ihre pom.xml etwas hinzufügen:

.

where http://localhost/repo is your local repo URL 
<repositories> 
    <repository> 
     <id>wmc-central</id> 
     <url>http://localhost/repo</url> 
    </repository> 
..................... Other repository config ...................... 
</repositories> 
+2

Der Vorschlag, das Jar mit Eclipse direkt zum Klassenpfad hinzuzufügen, löst das Maven-Problem hier nicht. Wenn jemand diesen Ansatz verwendet, dann geben sie im Wesentlichen auf, Maven als ihr Build-Tool zu verwenden. – twindham

+0

@twindham Ich stimme zu, dass die frühere Antwort eine Art Hack und wirklich keine gute Praxis war. Ich habe die Antwort mit einer weiteren Option aktualisiert, die weit verbreitet ist. – gyan

+0

nice edit, diese neue Antwort ist definitiv eine Lösung, die es dem Benutzer ermöglicht, Maven weiterhin als Build-Tool zu verwenden. – twindham