Maven

firmadankt

Mitglied
Hallo zusammen,

hier gibt es doch bestimmt ein paar Maven-Gurus, die einem blutigen Anfänger wie mir helfen können.

Mein Ziel: Aus meinem java-Quellcode, und einigen jar-Bibliotheken ein fertig kompiliertes Projekt machen, sprich "mvn compile" soll ohne Fehler durchlaufen.

Den Quellcode findet maven auch schon. Aber die jars leider nicht. Die jars liegen nicht in einem online repository. Die jars liegen alle in einem einzigen Verzeichnis auf meiner Festplatte. Ich hab schon versucht, die jars unter "<userdir>\.m2\repository" und unter <projectDir>\src\main\resources" zu platzieren, Leider ohne Erfolg.

Meine pom.xml sieht folgendermaßen aus:

XML:
<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>org.usercore</groupId>
  <artifactId>myProject</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>myProject</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>AnimatedTransitions</groupId>
      <artifactId>AnimatedTransitions</artifactId>
      <version>0.11</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
		<configuration>
			<source>1.6</source>
			<target>1.6</target>
		</configuration>
      </plugin>
    </plugins>
  </build>
</project>

Die lib die ich einbinden will heißt: AnimatedTransitions-0.11.jar.

Wenn ich mvn compile ausführe, versucht er jedesmal die lib herunterzuladen.

Ich denke mal es sind absolute Basics, an denen ich hier scheitere.

Ich hoffe mir kann hier jemand helfen
 
Zuletzt bearbeitet von einem Moderator:
Hi,
also du hast verschiedene Möglichkeiten:
1. mvn install
Läd deine dependencies runter und speichert sie im local repository unter home/.m2

2. Referenzieren von lokalen dependencies ausserhalb eines repositories:
Code:
<dependency>
<groupId>[MVN_GROUPID]</groupId>
<artifactId>[MVN_ARTIFACTID]</artifactId>
<version>[MVN_VERSION]</version
<systemPath>[SYSTEM_PATH_TO_JAR]</systemPath>
</dependency>

3. Hinzufügen von lokalen jars ins repository:
Code:
mvn install:install-file -DgroupId=<MVN_GROUPID> -DartifactId=<MVN_ARTIFACTID> -Dversion=<MVN_VERSION> -Dpackaging=jar -Dfile=<JAR_FILE_TO_INSTALL>

VG,
ck.
 
Vielleicht noch ein Abstauber dazu:

mvn install hat nichts mit dem unmittelbaren Herunterladen der Dependencies zu tun. Das ist eine simple Lifecyclephase, die das aktuelle Projekt im lokalen Repository ablegt und damit anderen zu Verfügungstellt. Das Herunterladen der Dependencies ist quasi Nebenprodukt des dependency goals was vor der compile Phase ausgeführt wird. Das Problem was firmadankt geschildert hat ist jedoch scheinbar ein leicht anderes, da das JAR das er benötigt in keinem Remoterepo zu finden sein wird.

Die restlichen Dinge die Chefkoch genannt hat, kann ich jedoch unterschreiben. Entweder du benutzt den SystemPath und codest den Pfad zum JAR hart in dein pom (was es für andere Entwickler effektiv unbrauchbar macht) oder du legst das JAR in dein lokales Repo.

Alternativ kann man Maven auch vorgaukeln, das lokale Repo läge an der stelle wo sich dein JAR befindet (gerade wenn man seinen eigenen Pool an JARs hat). Allerdings muss man bei der Ordnerstruktur dann immer noch Mavenkonventionen genügen (groupId mit Slashes als Ordner, artifactId als Ordner, Versionsordner, Jarname usw.). Ich halte es für sinnvoll einfach das JAR an die entsprechende Stelle im lokalen Repository zu kopieren oder halt es mit dem oben genannten Kommando direkt zu installieren. Hierbei ist jedoch drauf zu achten, dass man das für jeden Entwickler wieder einzeln machen muss, es sei denn man hat einen ordnetlichen Repositorymanager wie Nexus o.ä.

Gruß
Ollie
 
Danke für die Hilfe.

mvn install:install-file ...
hatte ich auch probiert, aber leider auch ohne Erfolg. Maven hat die jars nicht gefunden.

Nach Hinzufügen der <repository> Informationen in meine pom, hat Maven auch versucht die jars in dem angegeben Pfad zu finden. Leider auch ohne Erfolg.
Nach genauerem Auswerten der Fehlermeldungen habe ich auch bemerkt, dass er eine bestimmte Ordnerstruktur in dem angegebenen Repository erwartet.

Ordnerstruktur dann immer noch Mavenkonventionen genügen (groupId mit Slashes als Ordner, artifactId als Ordner, Versionsordner, Jarname usw.).

Nach dem ich die orderstruktur von Hand angelegt habe, hat es dann funktioniert. Schade dass ich das mit der Ordnerstruktur nirgends in der Mavendoku gefunden habe
 
Hm... das liegt sicher daran, dass die meisten mit dem Remoterepoaccess starten und die dinger dann in .m2/repository liegen haben und es dann fast selbsterklärend ist.

Aber gut, wenns tut...

Gruß
Ollie
 

Neue Beiträge

Zurück