912 Stimmen

Wie kann ich Maven anweisen, die neueste Version einer Abhängigkeit zu verwenden?

In Maven werden Abhängigkeiten normalerweise wie folgt eingerichtet:

<dependency>
  <groupId>wonderful-inc</groupId>
  <artifactId>dream-library</artifactId>
  <version>1.2.3</version>
</dependency>

Wenn Sie mit Bibliotheken arbeiten, die häufig veröffentlicht werden, kann das ständige Aktualisieren des <version>-Tags etwas lästig sein. Gibt es eine Möglichkeit, Maven anzuweisen, immer die neueste verfügbare Version (aus dem Repository) zu verwenden?

227 Stimmen

Ich empfehle diese Praxis (ebenso wie die Verwendung von Versionsbereichen) nicht, um die Reproduzierbarkeit der Builds zu gewährleisten. Ein Build, der plötzlich aus einem unbekannten Grund fehlschlägt, ist viel ärgerlicher als die manuelle Aktualisierung einer Versionsnummer.

17 Stimmen

@PascalThivent Manuelles Aktualisieren einer Versionsnummer in einem pom ist ein Schmerz, wenn Sie kontinuierliche Releases tun. Ich verwende das versions-Plugin in Kombination mit dem scm-Plugin, um dies zu umgehen (siehe meine Antwort).

5 Stimmen

@PascalThivent Beide sind ärgerlich, aber auf unterschiedliche Weise. Ich möchte je nach Situation zwischen beiden wählen können und nicht gezwungen werden, eines zu benutzen, weil jemand anderes entschieden hat, dass dieses besser ist.

5voto

Arayan Singh Punkte 2804

Wenn Sie möchten, dass Maven die neueste Version einer Abhängigkeit verwendet, dann können Sie Versions Maven Plugin und wie man dieses Plugin verwendet, hat Tim bereits eine gute Antwort gegeben, folgen Sie seinem Antwort .

Aber als Entwickler werde ich diese Art von Praktiken nicht empfehlen. WARUM?

Die Antwort auf die Frage nach dem Warum ist bereits gegeben durch Pascal Thivent im Kommentar zur Frage

Ich empfehle diese Praxis (und die Verwendung von Versionsbereichen) nicht für um der Reproduzierbarkeit des Builds willen. Ein Build, der plötzlich anfängt zu aus einem unbekannten Grund fehlschlägt, ist weitaus ärgerlicher als das manuelle Aktualisieren einer Versionsnummer.

Ich werde diese Art von Praxis empfehlen:

<properties>
    <spring.version>3.1.2.RELEASE</spring.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

</dependencies>

es ist einfach zu pflegen und leicht zu debuggen. Sie können Ihr POM im Handumdrehen aktualisieren.

1 Stimmen

Wenn Sie das versions-maven-plugin verwenden, ist der Build trotzdem reproduzierbar. Die Aktualisierung der Maven-Version kann in einem separaten Commit durchgeführt werden (wie Sie aus meiner Antwort ersehen können, müssen Sie ein separates Ziel angeben, es geschieht einfach nicht auf magische Weise im Build).

5voto

yilin Punkte 57

MEINE Lösung in Maven 3.5.4, verwenden Sie Nexus, in Eclipse:

<dependency>
    <groupId>yilin.sheng</groupId>
    <artifactId>webspherecore</artifactId>
    <version>LATEST</version> 
</dependency>

dann in der Finsternis: atl + F5 und wählen Sie die force update of snapshots/release

funktioniert es bei mir.

0 Stimmen

Auf der Kommandozeile funktioniert es aus den oben in verschiedenen Beiträgen genannten Gründen allerdings nicht. Viele von uns haben zu automatisierten Builds entsprechen und so unsere POMs haben zu arbeiten, wenn auf der Kommandozeile ausgeführt, nicht nur in Eclipse.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X