Soll ich schreiben repositories in meinem pom.xml?
Ich bin neu in Maven. Wenn ich starten neues Projekt mit Maven, sollte ich wissen, repository-URLs, damit es funktioniert?
Dies zum Beispiel für Hibernate tutorial http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html sagt darüber, wie ein Beispielprojekt zu erstellen, die mit pom.xml text. Aber das pom.xml enthält keine repositories.
So, meine m2eclipse plugin sagt, zum Beispiel Project build error: 'dependencies.dependency.version' for org.hibernate:hibernate-core:jar is missing.
für alle-tag in Abhängigkeit pom.xml
Ist dies wegen der repositories fehlen?
Wo wissen repositories URLs? Ist es ein großes repository? Warum ist es nicht standardmäßig enthalten?
UPDATE 1
Es wird hier gesagt, dass Maven verwenden sollten "zentralen" repository standardmäßig: http://maven.apache.org/guides/introduction/introduction-to-repositories.html
Den ich gesucht habe gibt es für hibernate-code-Artefakt und es gefunden. Also, das Artefakt IST im zentralen repository. Durch meine maven sagt, dass Abhängigkeit nicht gefunden. Daher ist es nicht es ist das zentrale repository. Warum?
- Ich antwortete, bevor Sie das update, sorry. Ihre Hibernate-Abhängigkeit hier. Haben Sie andere Elternteil
pom.xml
definiert und definieren Sie einige weitere repositories manuell? - Ich weiß nicht 🙂 ich habe gerade erstellte erste Maven-Projekt in Eclipse kopiert und hibernate ist pom.xml es. Wie Sie sich für Eltern-poms?
- Können Sie Streifen der
pom.xml
in die kleinste mögliche Teil, der funktioniert immer noch und macht das problem? So wenig wie möglich, Quellen sind nicht wichtig, nurpom.xml
. - Wenn ich entfernen Sie alle Abhängigkeiten, Eclipse Haltestellen anzeigen von Fehlern. Aber wie kann ich die Verwendung von Maven ohne Abhängigkeiten?
- Etwas gerade streichelte mir: Sie haben
<version>3.6.9.Final</version>
(oder was auch immer version Sie verwenden) deklariert innen<dependency>
von Hibernate? - Ah, du hast Recht, es gibt keine version-Stempel gibt. Ist das ein Fehler?
- Ja, wenn Sie nicht mit
<dependencyManagement>
dann version ist ein muss. Wenn dies das problem war lassen Sie mich wissen, werde ich Bearbeiten, meine Antwort enthält die eigentliche Lösung. - Sieht aus wie das war ein problem. Aber ich weiß nicht, welche Versionen in der Probe. So, die eigentliche Lösung ist, die vermutlich im Zusammenhang mit Ihrem
<dependencyManagement>
Informationen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Offenbar Ihre Hibernate-Abhängigkeit fehlt
<version>
tag:Beachten Sie, dass Sie nicht haben, um geben Sie die version der Abhängigkeiten, die zuvor deklariert
<dependencyManagement>
.Alte Antwort:
Jedes build-Skript (nicht nur mit Maven) sollte reproduzierbar und unabhängig von der Umwelt. Standard pom.xml (genannt super-pom), die jeder
pom.xml
erbt, bereits definiert Haupt-Maven-central-repository:Sie nicht haben, um zu definieren das repository und Sie nicht haben, um zu definieren, alle anderen, wenn alle Ihre Abhängigkeiten sind da. Auf der anderen Seite, wenn Sie einige externe repositories, die Sie muss fügen Sie Sie zu
pom.xml
, so dass jeder Entwickler ist immer in der Lage zu bauen.Die Quintessenz ist: wenn Sie können, erstellen Sie das Projekt, das komplett leeres repository, Ihre
pom.xml
ist in Ordnung.Es ist nicht ratsam, Sie zu definieren repositories in POM-Dateien, wie das verursacht eine Menge Probleme (Maven sucht diesen Repositorys für JEDES Artefakt, auch die zentralen, schlechte Portabilität, ...)
Beste Ansatz: Setup ein repository manager (Artifactory, Nexus,...) und Bearbeiten Sie Ihre settings.xml Datei, den repo-manager wie ein Spiegel.
Zweitbeste Ansatz: Definieren Sie die gewünschten repositories in Ihrem settings.xml Datei, die nicht in Ihrer pom.xml -Dateien.
Repositories in das poms ist eine schlechte Idee.
settings.xml
- Datei bedeutet, dass jeder neue Entwickler muss auch diese Datei Bearbeiten. Setzen nicht-standard-Repositorys in derpom.xml
- Datei (wird in die Quellcodeverwaltung eingecheckt) bedeutet, dass jeder Entwickler aufbauen können. Aber JA, die Authentifizierung für einen repository-server sollte in Ihrem privatsettings.xml
- Datei.