Sonntag, April 5, 2020

Maven: Lebenszyklus vs. Phase vs. Plugin vs Ziel

Relativ neue Entwickler hier, obwohl ich ‚ ve wurde unter Verwendung es für eine Weile, ich bin in der Hoffnung zu erstarren, mein Maven-Grundlagen. Teil mein problem ist, dass ich keine Erfahrung mit Ant, das scheint zu sein, von wo aus viele Erklärungen stammen. Ich habe Lesen und beobachten tutorials, und ich höre immer wieder die gleichen Begriffe:

  • Lifecycle
  • Phase
  • Plugin
  • Ziel

Von dem, was ich gelernt habe, es scheint, dass der Lebenszyklus ist der breiteste von den Haufen, und besteht aus (oder abgeschlossen) Phasen, plugins, und/oder Ziele.

Frage: Könnten Sie irgendein info auf, wie diese Begriffe in Zusammenhang stehen, und die häufigsten Beispiele?

Deutlicher und grundlegender, desto besser!

Kommentar zu dem Problem
Danke @Drejc – kann nicht glauben, dass ich nicht finden diese in meine Suche. Werde ich Lesen Sie über es jetzt. Kommentarautor: Jeff Levine
Also, zu klären, build-lifecycle – = – lifecycle, von denen es drei Arten: Standard, sauber, und Website? Andere Erklärungen hätte mir denken, das es gab noch eine vierte Lebenszyklus der Bezeichnung build. Kommentarautor: Jeff Levine
@Drejc – post als Antwort und ich werde es akzeptieren. Nochmals vielen Dank. Kommentarautor: Jeff Levine

InformationsquelleAutor der Frage Jeff Levine | 2014-10-28

7 Kommentare

  1. 50

    @Drejc Antwort ist nicht richtig, in seiner Gesamtheit.

    Insbesondere:

    Jeder dieser Phasen kann ein Ziel haben, führen Sie vor der vor – oder nach der post – phase, zum Beispiel:

    pre-install – …

    post-Paket – …

    Sie anzeigen können Ziele als zusätzliche „eingefügt“ Phasen, wenn Sie mögen.

    [Strikethroughs falsche Anweisungen von mir.]

    Einen Maven lifecycle ist eine (abstrakte) Konzept deckt alle Schritte (oder besser: alle die Schritte, die das Maven-Designer beschlossen, support) , die zu erwarten sind, die in ein Projekt-Entwicklung-Leben. Diese Schritte (oder Phasen) sind genannt Phasen in Maven Terminologie.

    Einen Maven-plugin ist ein container für/Anbieter von Ziele. Code implementiert Ziele ist das eigentliche Arbeitspferd. (Maven in seinem Kern selbst ist nur die Verwaltung von plugins und Umsetzung von Zielen). Die einzelnen plugins können Ziele zugeordnet werden/angebunden werden an eine der lifecycle-Phasen.

    Beim aufrufen mvn <phase> Maven übergibt alle Phasen (jedes mal) und führt alle Ziele (geliefert durch Plugin) , die gebunden wurden, um eine der Phasen vor und bis zu (und einschließlich) der jeweiligen phase. Wenn es eine phase mit kein Ziel gebunden, es geschieht nichts. Aber die phase ist bestanden dennoch.

    I. e. Sie können nicht „‚einfügen‘ zusätzliche Phasen“ in einem Maven built-in-Lebenszyklen. Sie sind schon da, immer! Sie könnten entwickeln Sie Ihre eigenen Lebenszyklus, der mit seinen eigenen Phasen, aber das geht weit darüber hinaus, einfach mit Maven, wie es ist.

    Phasen genannt „pre-install“ oder „post-Paket“ nicht vorhanden sind.

    Referenzen:

    InformationsquelleAutor der Antwort Gerold Broser

  2. 35

    Maven: Lebenszyklus vs. Phasen-vs.-Plugin vs. Ziel

    Beantwortung spät, genau zu klären, noch eine weitere Ebene der Granularität fehlt in diesem thread: Ausführungen (ein Tor), das sind die kleinsten Einheiten einer Maven-build.

    Daher haben wir bauen Zyklen (im Grunde, eine Reihe von Aktionen zu einem bestimmten Ziel), die sich aus Phasen (geringere Granularität, ein Zyklus Schritt), die sich auf eine Reihe von konfigurierten Ziele zur Verfügung gestellt, die von bestimmten plugins. Das heißt, Maven ist (auch) ein plugin executor, jedes plugin kann eine oder mehrere Ziele. Sie dann (auch) zu entscheiden, welche Ziel ist es angebracht, die phase, die meisten der Zeit, in der defaul-life-cycle (ohne, das ist die Standardeinstellung). Aber Sie können eigentlich noch eine andere Ebene: Hinrichtungen (mit dem gleichen Ziel, aus den gleichen plugins, oder verschiedene Ziele aus unterschiedlichen plugins)

    Einem Bild, das ich bereit für die Wiederaufnahme des gesamten
    Maven: Lebenszyklus vs. Phase vs. Plugin vs Ziel

    Und in der Tat dies ist, wie Maven zeigt, dass es (die kleinste Einheit der Arbeit) sind durch die einzigartige string in seine build-log:

    plugin-artifactId:plugin-version:plugin-goal (goal-execution-id) @ project-name

    Zum Beispiel hätten wir:

    [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ sample-project ---

    Was ja heißt (auf verschiedenen Ebenen der Granularität):

    • während der kompilieren phase (nicht erwähnt wird, leider) >
    • Ich bin Aufruf des Maven-Compiler-plugin (artifactId und version) >
    • Ich bin Aufruf seine kompilieren Ziel >
    • definiert durch die default-compile Ausführung

    Es ist einzigartig, weil in der Tat könnte man das gleiche Ziel (mit dem gleichen plugin) gebunden, um die verschiedenen Phasen oder auf der gleichen phase, aber in verschiedenen Ausführungen (mit unterschiedlichen Konfigurationen). Die maven-compiler-plugin, zum Beispiel, ist auch während der test-compile phase (in eine andere phase) kompilieren, testen, code (über seine testCompile Ziel) in einer anderen Ausführung (default-testCompile). Sie konnte auch kompilieren (mit dem gleichen plugin und Ziel) einige auto-generierter code während einer anderen phase definiert, die durch eine Ausführung von Ihnen angegebenen int-POM (und möglicherweise eine andere Konfiguration).

    Standard-Ausführungen vorgesehen sind out-of-the-box über Maven-packaging-Bindungen, das ist standardmäßig (und die Durchsetzung der Konvention über Konfiguration) Maven ruft bereits bestimmte Ziele (standard-plugins) während bestimmter Phasen. Die Hinrichtungen-ids der Standard-Aufrufe sind gemäß den bestimmte Konventionen.

    Dies erklärt auch, warum, wenn Sie wirklich wollen, zu überschreiben einer Voreinstellung (Bindung) von einem Maven-build, die Sie angeben müssen (überschreiben) genau die gleiche Ausführung id in der POM für das gleiche plugin. Sie könnten, zum Beispiel, überspringen Zusammenstellung einfach die Definition einer Ausführung der maven-compiler-plugin mit der gleichen default-compile – id, aber gebunden an einen nicht existierenden phase (oder eine leere).

    Um es kurz zu machen: eine Hinrichtung erzählt, Maven, welches Ziel(s) ausführen, mit welcher Konfiguration in die phase.

    Einige Ausführungen standardmäßig bereitgestellt werden (defaul-Bindungen), was erklärt, warum die maven minimalen pom nur 6 Linien können bereits viel tun, (compile, test, package, etc.): Umsetzung von Zielen des standard-plugins, die in bestimmten Phasen: es ist convention over configuration. Dann, über die pom.xml – Konfiguration kannst du Zeug (Hinrichtungen), um die zu bauen oder zu beeinflussen, das Verhalten von bereits konfigurierten plugins (in diesem Fall keine executions Abschnitt, aber nur configuration wäre genug).

    Ja, Sie könnte überspringen bauen Zyklen (und deren Phasen) und direkt aufrufen-Ziele (von plugins). Stellen Sie sich Folgendes vor:

    mvn compiler:compile
    mvn compiler:testCompile
    mvn surefire:test
    mvn jar:jar

    (ANMERKUNG: Sie könnte auch aufrufen, inline in einem einzigen Aufruf)

    Hier sind wir kompilieren app-code, test-code, ausführen von tests und Paket: stellen Sie sich vor, wie die manuelle, fehleranfällige, sich wiederholende und zeitaufwendig das wäre. Konvention über Konfiguration hilft uns: Maven stellt build-Lebenszyklus und Phasen. Die Standard-Lebensdauer (ohne Namen, das ist der Standard), bietet eine Reihe von Phasen auf der Grundlage der besten Praktiken und Konventionen (das mantra von Maven).

    Wenn Sie möchten, um das gleiche zu erreichen wie oben, führen Sie einfach: mvn package und es wird automatisch kompilieren, testen und packen Sie Ihr Projekt. Wie? aufrufen der plugins. Das heißt, die Phasen sind sinnvoll und konfigurierbaren Satz von plugins (Ziele) Hinrichtungen. Um es noch mehr standard, für jede phase von Maven wird Erstens ruft alle vorangegangenen phase, so dass z.B., wenn Sie testen möchten, werden Sie sicher, dass Sie zuerst kompilieren.

    p.s. beachten Sie, dass bei der Angabe mehrerer Ziele für die gleichen execution Sie immer noch deutlich sehen, in das build-Protokoll zwei unterschiedliche Ausführungen (mit derselben id) für die zwei verschiedene Ziele (also, immer noch einzigartig Tupel).

    InformationsquelleAutor der Antwort A_Di-Matteo

  3. 11

    Kredit Sandeep Jindal und Premraj (von hier aus Welche Maven-Ziele und Phasen und was ist deren Unterschied?). Ihre Erklärung, die mir helfen zu verstehen.

    Erstellte ich einige code-Beispiele & einige einfache Erklärungen hier https://www.surasint.com/maven-life-cycle-phase-and-goal-easy-explained/ . Ich denke, es kann helfen, andere zu verstehen und kann versuchen, etwas zu direkt.

    Kurz aus dem link, solltest Du nicht versuchen zu verstehen, alle drei auf einmal, Sie sollten zuerst verstehen, die Beziehung in diesen Gruppen:

    • Life-Cycle-vs-Phase
    • Plugin vs Ziel

    1. Life-Cycle-vs-Phase

    Lebenszyklus ist eine Sammlung von phase in der Folge finden Sie hier Life-Cycle-Referenzen. Beim Aufruf einer phase, wird es auch nennen alle phase vor.

    Beispielsweise die sauber Lebenszyklus hat 3 Phasen (pre-clean, clean, post-clean –).

    mvn clean

    Aufrufen pre-clean und sauber.

    2. Plugin vs Ziel

    Ziel ist wie eine Aktion in Plugin. Also, wenn ein plugin eine Klasse, Ziel ist es eine Methode.

    rufen Sie ein Ziel wie diese:

    mvn clean:clean

    Bedeutet dies „rufen Sie die sauberen Ziel, in der sauber-plugin“ (Nichts bezieht sich auf die saubere phase hier. Lassen Sie sich nicht von dem Wort“sauber“ ist verwirrend, Sie sind nicht das gleiche! Siehe ausführliche Erklärung in meinem link oben)

    3. Nun der Zusammenhang zwischen Phase & Ziel:

    Phase können (pre)links zu Ziel(s).Zum Beispiel, normalerweise, die sauber phase links zum reinigen Ziel. So, wenn Sie rufen Sie diesen Befehl:

    mvn clean

    Ruft die pre-clean-phase und der reinen phase, die links zu den clean:reinigen Ziel.

    Es ist fast das gleiche wie:

    mvn pre-clean clean:clean

    InformationsquelleAutor der Antwort Surasin Tancharoen

  4. 8

    Quelle: http://www.codetab.org/apache-maven-tutorial/ , das ist wirklich gutes tutorial

    Lebenszyklen der Lebenszyklus-Phasen, Plugins und Plugin-Goals sind der Kern von Maven.

    • Der Maven-Befehl mvn kann nur akzeptieren, Lifecycle, Phase, Plugin, Goal als argument.
    • Maven kommt mit drei Lebenszyklen – Standard, sauber und Website.
    • Jedem Lebenszyklus ist aus der lifecycle-Phasen und in allen gibt es 28 Phasen – Standard 21(validieren, …, kompilieren, …, Paket, …, installieren, bereitstellen), clean 3(pre-clean, clean, post-clean –) und Seite 4(pre-site, site, post-site, site-deploy).
    • , wenn eine phase des Lebenszyklus aufgerufen wird, mit mvn-Befehls, werden alle vorhergehenden Phasen, die nacheinander ausgeführt werden einer nach dem anderen.
    • Lebenszyklus-Phasen von sich selbst keine Fähigkeiten, um zu erreichen, einige Aufgaben und verlassen Sie sich auf die plugins zu carryout die Aufgabe.
    • je nach Projekt und die Verpackung geben, Maven bindet verschiedene plugin Ziele der lifecycle Phasen und Ziele carryout die Aufgabe, die Ihnen anvertraut werden.

    Wenn wir laufen „mvn package“ in einem Java-Projekt Maven-plugin bindet Sie die Ziele der lifecycle Phasen wie in der nächsten Abbildung.

    Maven: Lebenszyklus vs. Phase vs. Plugin vs Ziel

    InformationsquelleAutor der Antwort Erlan

  5. 7

    So zu erklären, ein wenig weiter wie beschrieben hier

    Maven-builds sind aufgeteilt in Lebenszyklen, diese sind:

    • sauber
    • bauen (Standard)
    • Website

    Jeder dieser Zyklen ist in Phasen aufgeteilt.
    Zum Beispiel bauen ist in Phasen aufgeteilt, wie:

    • Ressourcen erstellen
    • kompilieren
    • Paket
    • installieren

    Phasen haben mit Zielen zu führen, die vor pre- oder nach post- eine phase, zum Beispiel:

    • pre-clean – werden ausgeführt, bevor die saubere phase
    • post-clean – wird ausgeführt, nachdem die saubere phase

    Können Sie die Ansicht “ Ziele als zusätzliche „eingefügt“ Phasen, wenn Sie mögen.
    Lesen hier oder werfen Sie einen Blick auf @Gerolds Antwort für details.

    InformationsquelleAutor der Antwort Drejc

  6. 5

    Und nachträglich ein weiteres Diagramm

    • Lebenszyklen als gelbe Rechtecke
    • Phasen von Lebenszyklen als Blaue Rechtecke mit
      „callable“ Phasen in dunkelblau (d.h. Phasen mit hypenation sind in der Regel nicht von der Kommandozeile aufgerufen, da Sie möglicherweise nicht ausgelegt werden, um das Projekt verlassen, in einem gut definierten Zustand).
    • Ziele als Blaue Rauten. Der Verein/die verbindliche phase „- > Ziel“ angezeigt wird, eine der „jar“ Verpackungs-Modus. In jeder phase können Ziele gebunden. Dies gilt natürlich für jede der Lebenszyklen, obwohl die Bindungen sind nur show für den „Standard“ – Lebenszyklus.
    • Plugins als graue Rechtecke abgeschnitten. Plugins bieten die Ziele, die gebunden werden können, um die Phasen.

    Maven: Lebenszyklus vs. Phase vs. Plugin vs Ziel

    InformationsquelleAutor der Antwort David Tonhofer

  7. 1

    Lebenszyklus vs. Phasen:
    Life Cycle ist eine Sammlung von phases. Wenn Sie rufen eine phase, es wird auch rufen alle Phasen, bevor Sie kommen.
    Maven kommt mit 3 built-in build-life-cycles:

    1. Clean-lifecycle – dies beinhaltet die Reinigung des Projektes (für ein frisches build & deployment)
    2. Default/build-lifecycle – dieser übernimmt für Sie die gesamte Bereitstellung der Projekt
    3. Site-lifecycle – dieser behandelt die Generierung der java-Dokumentation des Projekts.
      Maven: Lebenszyklus vs. Phase vs. Plugin vs Ziel

    Sauber Lebenszyklus 3 Phasen: pre-clean, clean und post-clean. Standard-und site-Lebenszyklen die Phasen sind die gleichen wie in der Abbildung gezeigt.

    InformationsquelleAutor der Antwort Arun Raaj

Kostenlose Online-Tests