External Jar einbinden bei Maven

Carcharoth

Bekanntes Mitglied
Hallo

Ich brauche in meinem Projekt die Bibliothek JMapViewer (openstreetmap).
Ich nutze Maven. Wenn ich die Dependency in der pom angebe, kriege ich einen Fehler "Missing Artifact org.openstreetmap.jmapviewer:jmapviewer:jar:2.14".
Dann habe ich die jmapviewer-2.14.jar runtergeladen und als external jar dem Build Path hinzugefügt.
Das Programm läuft prima.

Nur bekomme ich beim Kompilieren mit Maven einen Haufen Fehler. Allen voran:
Code:
[ERROR] /C:/Users/F/git/repository/PostleitzahlTool/src/main/java/common/Karte.java:[8,40] package org.openstreetmap.gui.jmapviewer does not exist

Was mache ich falsch ?
Ich habe das Gefühl, Maven findet die jmapviewer-2.14.jar nicht weil ich sie nicht korrekt eingebunden habe.

Danke für eure Tipps.

1616708451886.png
 
Ja das würde ich auch gerne.
In der pom habe ich es so versucht einzubinden. Das Wort "dependency" wird dann unterkringelt und ich kriege die Meldung "Missing artifact org.openstreetmap.jmapviewer:jmapviewer:jar:2.14".

Code:
<!-- https://mvnrepository.com/artifact/org.openstreetmap.jmapviewer/jmapviewer -->
<dependency>
    <groupId>org.openstreetmap.jmapviewer</groupId>
    <artifactId>jmapviewer</artifactId>
    <version>2.14</version>
</dependency>
 
In der pom habe ich es so versucht einzubinden. Das Wort "dependency" wird dann unterkringelt und ich kriege die Meldung "Missing artifact org.openstreetmap.jmapviewer:jmapviewer:jar:2.14".
Bei IDE-Fehlern in der Pom immer einmal per Konsole bauen, erst wenn es dort den gleichen Fehler gibt, ist es auch ein Fehler 🙂
 
Danke für den Hinweis. Ich kriege den Fehler auch über die Konsole.

Nun habe ich es wie folgt lösen können: ich habe folgenden Repository der pom hinzugefügt.
Code:
 <repositories>
     <repository>
        <id>josm-public</id>
        <name>josm public releases</name>
        <url>https://josm.openstreetmap.de/nexus/content/groups/public</url>
    </repository>
 </repositories>

Zum Abschluss eine Verständnisfrage zur pom: kann ich jetzt da verschiedene Repositories deklarieren und die Dependencies werden in all diesen Repositories und im Maven-Repository gesucht ?
 
Also generell bei Abhängigkeiten schaue ich gerne erst einmal im Web, wo sich das wie findet. Bei Deiner Abhängigkeit wäre dies dann:

Und wenn Du da schaust, dann findest Du, dass es nicht im central Repository zu finden ist sondern in dem JOSM Repository. (Also einmal in der Tabelle auf der Seite aber auch unter den Tabs mit den diversen Build Tool Einträgen findet sich noch einmal explizit:
Und das hat sich jetzt mit Deinem Post überschnitten, daher kann ich aufhören zu schreiben 🙂
 
Zum Abschluss eine Verständnisfrage zur pom: kann ich jetzt da verschiedene Repositories deklarieren und die Dependencies werden in all diesen Repositories und im Maven-Repository gesucht ?
Ja genau, Du gibst mehrere Repositories an und er sucht in allen Repositories um eine Abhängigkeit zu finden.

Die Suchreihenfolge wird dann auch hier beschrieben:
Das local POM wird zuerst genommen, dann parent POM und am Ende Super POM.
 

Zurück
Oben