Wie man maven verwenden Sie die neueste release-version in version reichen?
In mein maven-Projekt verwende ich die Abhängigkeiten wie diese:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>[4.2.2, 5.0)</version>
</dependency>
Da die nächste major-version (5.0) kann sich ändern, die API, ich möchte mein Projekt mit den neuesten stabil version verfügbar, für die Abteilung 4.x.
Heute morgen bug-Untersuchung sagte mir dieser Ausdruck [4.2.2, 5.0) packt alle version verfügbar. In meinem Fall: 4.3-alpha1.
Wie man maven verwenden thelatest release-version in version reichen?
- Gibt es eine ähnliche Seite hier: stackoverflow.com/questions/30571/...
- es ist keine Antwort auf meine Frage im link. Ich habe es gesehen vor vor der Frage.
- Ich nehme an, Sie verwenden maven2 (angesichts der Frage-tags). Maven wird dringend davon abgeraten, denn dieser kann dazu führen, nicht reproductible bauen. UND dies wird jede spätere migration auf aktuelle maven version ein schmerzhafter Prozess. So, ich dringend davon abgeraten, diese als nützlich, wie es scheinen mag.
- Jetzt habe ich den Punkt. Danke.
- Du bist herzlich willkommen. Ich hatte die gleiche Idee, über Abhängigkeiten zwischen meinen eigenen Projekten. Ich würde davon ausgehen, dass das Risiko nicht so groß, wie für eine Abhängigkeit von einem externen Anbieter. Aber ich entdeckte, dass dies nicht eine gute Praxis, auch in diesem Fall. Zum Beispiel, pom von einer version der pom kann auch dazu dienen, eine Art "selbst-Dokumentation" für Ihr Projekt, und dann ist es nützlich, in der Lage sein, genau zu wissen, die Menge der verwendeten Bibliotheken zur compile-Zeit und Laufzeit. Sie möchten wissen, diese für eine spätere Fehlersuche.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf die Dokumentation für Maven bereichsauswahlen, merke ich den Kommentar:
Es sei denn, das Artefakt-version endet mit
-SNAPSHOT
, Maven wird betrachten es als eine gültige Version zu bauen. Soweit ich weiß,-alpha1
hat keine Besondere Bedeutung zu Maven. Es ist nur ein weiterer random-qualifier.Ich würde empfehlen Ihnen dringend, auf die version reichen, sowieso. Vorhersehbar baut, sollte das Ziel jedes stabil-Projekt und version reicht Fliegen in das Gesicht, dass.
Predictable builds should be the goal of any stable project and version ranges fly in the face of that.
Es sei denn, Sie kümmern sich um die Sicherheit mehr als vorhersehbar baut. Wenn ein build ist zerbrochen, jeder sieht es und eilt zu beheben. Wenn eine Schwachstelle gefunden wird, niemand kümmert sich.Maven 3 unterstützt die Versionierung für alpha, beta und snapshots sowie
mit der folgenden Reihenfolge
alpha < beta < snapshot
ComparableVersion.StringItem.comparableQualifier(String)
). Und in der Javadoc heißt es: << strings sind geprüft bekannten Qualifier und qualifier Bestellung wird verwendet für version bestellen. Bekannte Qualifier (groß-und Kleinschreibung) sind: alpha-oder ein beta-oder b -, Meilenstein-oder m -, rc-oder cr -, snapshot -, (leerer string) oder ga oder final, sp >>