Maven2 - wie mache ich externe Jar Dateien zu Artifacts?

Status
Nicht offen für weitere Antworten.

pocketom

Bekanntes Mitglied
Ich habe hier eine xyz.jar Datei die nicht im zentralen Maven Repo ist, da sie von einem Drttanbieter kommt habe ich keinen Sourcecode und somit auch kein Projekt dafür. Nun möchte ich auch dieses jar in meinen Projekten als Maven Dependency hinzufügen können. Einen Nexus Repository Server wie im Maven Devinitive Guide beschrieben haben wir aber derzeit nicht in der Firma. Ich habe versucht eine pom.xml für das jar zu schreiben um es zu einem Artifact zu machen, aber ich kann es leider nicht in anderen Maven Projekten importieren. Was muss hierzu noch tun?

Btw. dies jar File ist ein Wrapper für eine Windows DLL, wie bekomme ich es hin das jar File und DLL File zusammen importiert werden wenn ich einem Project die Dependency hinzufüge?
 
M

maki

Gast
Maven gibt dir doch nach der Fehlermeldung dass das Artefakt nicht gefunden wurde genau die Kommandozeile aus mit der du das Problem löst, musst nur noch den Dateipfad richtig setzen.

Btw. dies jar File ist ein Wrapper für eine Windows DLL, wie bekomme ich es hin das jar File und DLL File zusammen importiert werden wenn ich einem Project die Dependency hinzufüge?
Hmmm.. dass hört sich schon schwieriger an, sollte aber einfach sein,, würde es mal als eigenes Artifakt mit dem typen DLL probieren.
 

pocketom

Bekanntes Mitglied
Hi! Das ist es ja, Maven gibt mir keinen Fehler. mvn install, mvn site, läuft alles durch ohne Fehler. Ich habe lediglich ein mini Source file welches eigentlich nur einen Import beinhaltet und der wird von Eclipse moniert (the import ... cannot be resolved). Im Buildpath unter Libraries/Maven Dependencies finde ich komischerweise einen Folder und nicht das jar file. Nehme mal an das hier das Problem liegt?
 
M

maki

Gast
Du hast den Wrapper aber schon als Dependency eingetragen?
Oder erwartest du das Maven2 deine Buildpathfehler selber korrigiert? ;)
 

pocketom

Bekanntes Mitglied
Ja, ich habe über "Add Dependency" das Wrapper jar hinzugefügt, es wurde mir direkt über die Liste angeboten als ich unsere firmeneigene GroupID eingetippt habe. Er findet es und es liegt auch im repository Verzeichnis. Am Buildpath habe ich garnichts gemacht, normal sollte Maven die Abhängigkeiten dort doch wie üblich eintragen und einen Verweis auf das lokale repository anlegen, oder irre ich mich?
 
M

maki

Gast
Am Buildpath habe ich garnichts gemacht, normal sollte Maven die Abhängigkeiten dort doch wie üblich eintragen und einen Verweis auf das lokale repository anlegen, oder irre ich mich?
Wenn du das m2eclipse Plugin nutzt, rechtsklick aufs Projekt, Maven -> update Project Configuration
 

pocketom

Bekanntes Mitglied
Passiert auch nix, so sieht es im Buildpath aus:


Vielleicht sollte ich dazu sagen das ich zuerst ein Maven Project unter Eclipse erstellt habe. Die jar Datei habe ich benannt wie die ArtifactID und nach /target kopiert. Die DLL befindet sich unter \src\main\resources. Danach habe ich mvn site ausgeführt und jar und pom datei landeten automatisch in meinem lokalen repository. Wenn ich es nun in einem anderen Projekt als dependency hinzufüge dann wird leider der gesamte Projektfolder hinzugefügt anstatt ein jar mit Verweis auf das File wie üblich...?


So sieht die pom.xml aus die ich für das jar file angelegt habe:

Code:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.idealsoftware</groupId>
  <artifactId>vpe-javaedition-beta</artifactId>
  <name>VPE Java Edition DLL Wrapper -beta-</name>
  <version>3.2.5.0</version>
  <description>Date: 20090525</description>
  <packaging>jar</packaging>
</project>


[EDIT]: Ich habs rausbekommen. Zuerst habe ich das Maven Project gelöscht in Eclipse und nur jar und pom files aufgehoben. Dann habe ich in das jar file reingeschaut und festgestellt das die ursprünglichen Klassen alle nicht mehr drin sind, stattdessen aber meine geliebte DLL Datei die ich ja extra im resource Verzeichnis abgelegt habe. Als ich mvn site ausgeführt habe hat er das jar file neu gebaut, allerdings ohne jeglichen kompilierten Code, denn den habe ich ja nicht... :)


Bleibt nur das Problem wie ich jetzt meine DLL Datei automatisch mitimportieren lasse....???
 
M

maki

Gast
Bleibt nur das Problem wie ich jetzt meine DLL Datei automatisch mitimportieren lasse....???
Als eigene Dependency, aber für deinen Wrapper ;)
Maven2 kennt nur ein Artifakt pro pom, frustriert viele Menschen vor allem bei der Konvertierung von bestehenden Projekten, das zu umgehen ist zwar möglich, aber der Aufwand ist groß und die Lösung nicht ganz sauber.
 

kama

Top Contributor
Hallo,

Einen Nexus Repository Server wie im Maven Devinitive Guide beschrieben haben wir aber derzeit nicht in der Firma.
Das muss der erste Schritt sein sonst macht Maven nicht wirklich spass....erst recht im Kommerziellen Umfeld...

Also unbedingt irgendeinen Repository Manager ( Nexus, Archiva, Artifactory etc.) installieren...und den nutzen...

Ich habe versucht eine pom.xml für das jar zu schreiben um es zu einem Artifact zu machen, aber ich kann es leider nicht in anderen Maven Projekten importieren. Was muss hierzu noch tun?
Du must das File in Dein lokales Repository importieren....

Code:
mvn install:install-file -Dfile=xyz.jar -DgroupId=GroupId -DartifactId=ArtifactId -Dversion=1.0.0 -Dpackaging=jar
Das installiert das Jar in Dein lokales Repository...(üblicherweise auf Deiner lokalen Platten)...

Das muss dann jeder machen der das Projekt übersetzen will bzw. das Jar (xyz.jar) als Dependency nutzen will...

Wenn Ihr ein internes Repository hättet, könntest Du das dann an einer Zentralen Stelle machen, nämlich dort ...und schon können alle das Nutzen....

Um nun die DLL als weitere Komponente mit abzulegen kannst Du eventuell mit dem Classifier probieren, ob das Klappt...

Code:
mvn install:install-file  -Dfile=xyz.dll \
                          -DgroupId=GroupId \
                          -DartifactId=ArtifactId \
                          -Dversion=1.0.0 \
                          -Dpackaging=dll \
                          -Dclassifier=dll

Das bedeutet aber auch, dass Du eine weitere Dependency mit entsprechendem Classifier und packaging angeben musst...eventuelle kannst Du packaging weg lassen bin ich mir aber gerade nicht sicher....

MfG
Karl Heinz Marbaise
 
M

maki

Gast
Hallo,

Stimmt nicht ganz...man kann mithilfe von Classifier durchaus mehrere Artefakte adressieren.....(Im Sinne von Jar's hast Du recht ;-).
Hi,

hast vergessen zu zitieren:
das zu umgehen ist zwar möglich, aber der Aufwand ist groß und die Lösung nicht ganz sauber.
;)

Klar könnte man seine eigenen, zusätzlichen Artefakte bauen und mit classifiern versehen und beim install und deploy ins zugehörige Repo schieben wie das für die JavaDoc, Test Klassen etc. gemacht wird, ist aber Aufwand und widerspricht dem "Maven way of doing things".
 

pocketom

Bekanntes Mitglied
Vielen Dank für Eure Antworten! Ich mache mich dann mal noch diese Woche daran einen Repository Server aufzusetzen. Ist irgendeines der angebotenen (Open-Source)Produkte hier besonders empfehlenswert?
 
M

maki

Gast
Ich steh auf artifactory, einfach & für den Enterprise Bereich geegnet.
 

kama

Top Contributor
Hi,

maki hat gesagt.:
...das zu umgehen ist zwar möglich, aber der Aufwand ist groß und die Lösung nicht ganz sauber.
Na ja "groß" ? ....

Einfach z.B. das Maven-jar-plugin in einen anderen Execution packen und noch einen Classifier definieren...fertig...ca. 10-15 Zeilen...(schön formatiert)....Nenne ich nicht wirklich viel Aufwand....
Offiziell dokumentiert...
Oder eben per assembly Plugin ...

MfG
Karl Heinz Marbaise
 
M

maki

Gast
Schon klar dass es für jars relativ einfach geht, aber nicht alle Artifakte sind jars ;)

Was ist mit XML bzw. anderen Dateien?
"Legacy" Projekte die zB. mit Ant erstellt werden haben oft eine vielzahl von Artifakten die keine Jars sind (zB. EJb Projekte die gleich die Konfig für den Appp Server miterstellen), da hilft das jar Plugin wenig.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A [maven2] Goals Projektabhängig auswählen Tools - Maven, Gradle, Ant & mehr 4
R [Maven2] immer Build failed für Projekt Tools - Maven, Gradle, Ant & mehr 10
RaoulDuke Maven2 - Anfängerprobleme Tools - Maven, Gradle, Ant & mehr 9
P [Maven2] Globale Properties Tools - Maven, Gradle, Ant & mehr 5
P [Maven2] Deploy auf Artifactory mit LDAP Authentication Tools - Maven, Gradle, Ant & mehr 10
P [Maven2] Projectdoku direkt auf Webserver deployen Tools - Maven, Gradle, Ant & mehr 7
M Maven2 Axis2 Tools - Maven, Gradle, Ant & mehr 2
T [MAVEN2] Wo Saple-code zur Lib platzieren? Tools - Maven, Gradle, Ant & mehr 9
P [Maven2] Wie Blacklists löschen? Tools - Maven, Gradle, Ant & mehr 8
P [Maven2] Wie kann man das "Updating Indexes" verhindern? Tools - Maven, Gradle, Ant & mehr 4
M Maven2 - Ant execution einmalig ausführen Tools - Maven, Gradle, Ant & mehr 8
byte Maven2: Test und Prod Builds Tools - Maven, Gradle, Ant & mehr 11
K Maven2 inherited docs nachladen Tools - Maven, Gradle, Ant & mehr 4
N Maven2 Projekt unter Hudson mit SVN Repository erstellen Tools - Maven, Gradle, Ant & mehr 4
H Maven2 -> Nachladen der Dependencies Tools - Maven, Gradle, Ant & mehr 4
J Anfängerfragen zu maven2 Tools - Maven, Gradle, Ant & mehr 2
U Maven2 WAR Plugin doppelte Dependencies Tools - Maven, Gradle, Ant & mehr 4
M Externe Bibliotheken modularisieren Tools - Maven, Gradle, Ant & mehr 5
X externe Jars mit Launch4j Tools - Maven, Gradle, Ant & mehr 1
Miness Externe Library in Jar einbinden Tools - Maven, Gradle, Ant & mehr 8
S Maven Externe Jar hinzufügen Tools - Maven, Gradle, Ant & mehr 3
H Maven externe resource hinzufügen Tools - Maven, Gradle, Ant & mehr 3
J externe jar ausserhalb des LIB-Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
D ANT - javac + externe Jar + sourcepath Tools - Maven, Gradle, Ant & mehr 6
J Externe Dateien im jar File Tools - Maven, Gradle, Ant & mehr 4
B Applet und Jar - wie binde ich externe Jars ein Tools - Maven, Gradle, Ant & mehr 1

Ähnliche Java Themen


Oben