Bibliotheken und deren Abhängigkeiten herausfinden

Hallo Leute,

da ich noch relativ neu in der Java Materie bin, wie einige es schon wissen, tue ich mich immer schwer mit den Abhängigkeiten zu den Bibliotheken. Ich benutze gerne Eclipse IDE. Aber wenn ich z.B. ein Spring / Hibernate Projekt aufsetzen will weis ich nie welche Bibliotheken ich einbinden muss. Gibt es hierfür nicht irgendeinen einfachen Weg um Abhängigkeiten von Bibliotken zu ermitteln?

Ja, dazu nutzt man für gewöhnlich maven.
Ich benutze maven in eigenen Projekten nicht direkt, sondern verwende gradle und greife damit auf die maven Repositories zu.

Und wie erstellt ihr unter Enclipse dann eure Projekte? Ich meine erstellt ihr erst die Maven-Datei und lasst sie einlesen? Kann jemand hier eine gute Seite für Erstellung von Projekten unter Eclipse mittels Maven empfehlen?

Für Eclipse gibt es beispielsweise das Plugin m2eclipse. Hast du das installiert, kannst du als neues Projekt “Maven” auswählen.

Ja (glaub ich zumindest) wurd mit Eclipse Juna J2EE Paket mitinstalliert… Wenn ich “New Project”->"…other" aus dem folgenden Fenster “Maven” aufklappe und dann “Maven Project” auswähle kommt eine Fenster nach “Next” kommt eine ganz Auflistung von Archetypes…welche von den vielen müsst ich denn für ein Spring / Hibernate - Projekt auswählen? … group-id: org.appfluse.archetype… Artifact ID: appfluse-basic-spring ???

Du musst keinen archetype auswählen. Du kannst problemlos auch erstmal ohne starten und die fehlenden depedencies per Hand hinzufügen.

Würde ich auch sagen, die Vorlagen sind nicht unbedingt die besten. Ich geh immer zur “Hersteller”-Seite, mittlerweile ist bei fast allen Projekten/Bibliotheken eine Copy&Paste-fähige dependency für maven in der Doku, den “Getting Started”-Guides etc. dabei

http://hibernate.org/orm/documentation/getting-started/

Ich hab mal für mein Projekt eine pom.xml erstellt:


4.0.0
skunitz
maventest
jar
1.0-SNAPSHOT
maventest
http://maven.apache.org

    <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
    </dependency>
    <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.6</version>
    </dependency>
hibernate hibernate3 3.2.3.GA dom4j dom4j 1.6.1 commons-logging commons-logging 1.1.1 commons-collections commons-collections 3.2.1 antlr antlr 2.7.7
    <!-- Spring framework -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring</artifactId>
      <version>2.5.6</version>
    </dependency>

    <!-- Spring AOP dependency -->
    <dependency>
	        <groupId>cglib</groupId>
  <artifactId>cglib</artifactId>
  <version>2.2</version>

nachdem ich „mvn clean“ und anschliessend „mvn compile“ ausgeführt habe, wird mir gesagt


Failed to execute …: Failure to find hibernate: hibernate3:jar:3.2.3.GA in http://repo.maven.apache.org/maven2

lt. http://mvnrepository.com sollte es aber stimmen. Sehe momentan nicht den Fehler. Wie müsste es denn korrekt heisen?

Wenn man die POM sieht scheint alles OK zu sein, in der Fehlermeldung macht mich jedoch das Space zwischen hibernate: und hibernate3 stutzig. Sicher das in deiner original POM kein Space zwischen den artifactId Tags ist?

Liegt wahrscheinlich daran, dass du GA klein schreiben musst:

<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate</artifactId>
	<version>3.2.3.ga</version>
</dependency>

Nein dazwischen steht kein Leerzeichen, da hast du recht.

[QUOTE=cmrudolph;97638]Liegt wahrscheinlich daran, dass du GA klein schreiben musst:

<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate</artifactId>
	<version>3.2.3.ga</version>
</dependency>

[/QUOTE]
Ich habe es auch mal mit kleinem „ga“ probiert. Der Fehler ist gelieben.

Hat noch jemand irgendeine Idee was ich machen könnte?

In deiner POM ist die groupId anders.

Wenn du uns deine aktuelle POM und die Fehlermeldung zeigen wuerdest, wuerde mein Glaskugel nicht nur „Fehlbedienung von Maven“ ausspucken :wink:

Ansonsten empfiehlt sich die Lektuere der Doku von Maven!

[QUOTE=maki]In deiner POM ist die groupId anders.

Wenn du uns deine aktuelle POM und die Fehlermeldung zeigen wuerdest, wuerde mein Glaskugel nicht nur „Fehlbedienung von Maven“ ausspucken :wink:

Ansonsten empfiehlt sich die Lektuere der Doku von Maven![/QUOTE]
Wer lesen kann ist klar im Vorteil :wink:

Also meine POM siehst du bereits oben. Das einzige was ich ausprobiert, aber zum gleichen Ergebnis führte ist anstelle von

hibernate hibernate3 3.2.3.GA ...

Version in klein Buchstaben zu schreiben, also wie folgt

hibernate hibernate3 3.2.3.ga ...

so wie es cmrudolph schon meinte. Aber beides führt zum gleichen Ergebnis der Fehlermeldung

Failed to execute …: Failure to find hibernate: hibernate3:jar:3.2.3.GA in http://repo.maven.apache.org/maven2

bzw.

Failed to execute …: Failure to find hibernate: hibernate3:jar:3.2.3.ga in http://repo.maven.apache.org/maven2

Der Dreier ist falsch
[XML]

org.hibernate
hibernate
3.2.3.ga

[/XML]
siehst du z.B. hier: http://mvnrepository.com/artifact/org.hibernate/hibernate/3.2.3.ga

wo hast du denn deine Vorlage her? (und: warum nicht die aktuelle Version?)

In groupId: s/hibernate/org.hibernate/

Eben, also:

Deine groupId ist falsch!

Immer noch :wink:

[QUOTE=Bleiglanz]Der Dreier ist falsch
[XML]

org.hibernate
hibernate
3.2.3.ga

[/XML]
siehst du z.B. hier: http://mvnrepository.com/artifact/org.hibernate/hibernate/3.2.3.ga

wo hast du denn deine Vorlage her? (und: warum nicht die aktuelle Version?)[/QUOTE]

Meine das ich die von mvnrepository hätte. Hab ich wohl falsch abgetippt. Danke für den Hinweis. Was wäre denn denn der aktuelle? In Maven Repo hab ich als aktuelle Final jezt nur

org.hibernate hibernate 3.5.4-Final

gefunden. Ist das die aktuelle?

Maven gav: org.hibernate:hibernate-core:4.3.5.Final siehe auch: http://hibernate.org/orm/downloads/

Und heute sollte eigentlich sogar die 4.3.6 herauskommen. Dort ist ein kritischer Bug gefixed, der sich auf die Kombination tomcat + JNDI Datasource + hibernate auswirkte.