Maven - 1、什么是maven?为什么需要它?

maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。

1、为什么我们要学习maven?

学习某些技术,肯定是我们遇到了某些问题,而这些问题目前手头上没有很好的方案去解决,此时刚好有一种技术可以很好的解决这个问题,这样能够驱动我们愿意去学。所以我们学任何技术之前,需要先了解这种技术能够解决什么问题。带着问题去学习,大家才有兴趣,才能够更快的掌握。

我们遇到了什么问题呢?

maven还未出世的时候,我们有很多痛苦的经历。

1.1、痛点1:jar包难以寻找

比如我们项目中需要用到fastjson,此时我们会去百度上检索fastjson相关jar包,然后下载下来,放到项目的lib下面,然后加到项目的classpath下面,用着用着发现这个jar的版本太老了,不是我们想要的,然后又重新去找,痛苦啊。

1.2、痛点2:jar包依赖的问题

jar包一般都不是独立存在的,一般一些jar也会用到其他的jar,比如spring-aop.jar会用到spring-core.jar,这种依赖可能比较简单,有些依赖可能有很多级,比如a.jar依赖于b.jar,而b.jar依赖c.jar,而c.jar又依赖于b.jar,当你用到a.jar的时候,你需要把其他3个也进入才可以,所以你用到一个jar的时候,你必须明确知道这些jar还会依赖于哪些jar,把他们都引入进来,否则项目是无法正常运行的,当项目用到很多jar的时候,我们是很难判断缺少哪些jar的,只有在项目运行过程报错了,才知道,这种也是相当痛苦的,浪费了大量时间。

1.3、痛点3:jar包版本冲突问题

A.jar wird im Projekt verwendet, und a.jar hängt von Version 1.5 von c.jar ab. Dann kopieren wir diese beiden Gläser in das Projekt, und b.jar wird später verwendet, aber b.jar hängt von c.jar ab 1.0-Version von . Zu diesem Zeitpunkt haben Sie b.jar und c-1.0.jar eingeführt und werden feststellen, dass es zwei Versionen von c.jar gibt. Es liegt ein Konflikt vor und beim Start wird ein Fehler gemeldet In diesem Fall müssen Sie mit der Lösung des Glases beginnen. Das Problem des Konflikts ist ebenfalls sehr schmerzhaft.

Wenn wir ein JAR-Paket aus dem Internet zur Verwendung finden, ist es für uns schwierig zu beurteilen, von welchen Versionen anderer JARs dieses JAR abhängt. Beispielsweise hängt a.jar von b.jar ab. Sie finden b.jar im Internet , und schließlich setzen Als ich das Projekt betrat, stellte ich fest, dass die Version von b.jar zu alt war, also musste ich sie erneut finden.

Ich erinnere mich noch daran, als ich an einer Drittanbieter-Zahlung gearbeitet habe. Ich habe lvy zum Importieren von JARs verwendet. Es gibt keine gute Möglichkeit, die Konflikte von JAR-Paketen zu lösen. Um das Problem der JAR-Paketkonflikte in der zu lösen Das Projekt dauerte eine ganze Woche.

1.4. Schmerzpunkt 4: Das Glas ist unbequem zu handhaben

Wenn unser Projekt relativ groß ist, teilen wir ein großes Projekt in viele kleine Projekte auf, und jedes kleine Projekt ist für mehrere Entwickler verantwortlich. Beispielsweise ist ein E-Commerce-Projekt unterteilt in: kontobezogene Projekte, auftragsbezogene Projekte, Rohstoffbezogene Projekte, die Strukturen dieser Projekte sind ähnlich und die verwendeten Technologien sind dieselben: SSM (Spring, SpringMVC, Mybatis), und dann muss jedes Projekt eine Kopie dieser JARs in sein eigenes Projektverzeichnis kopieren, das letzte 10 Projekte waren nur Gläser und kopierten 10 Kopien. Später stellten wir fest, dass einige Gläser im Projekt aktualisiert werden mussten, und planten, sie zu ersetzen. Zu diesem Zeitpunkt müssen wir 10 Projekte nacheinander ersetzen, was ebenfalls ziemlich schmerzhaft ist.

1.5. Schmerzpunkt 5: Unterschiedliche Projektstrukturen

Vor langer Zeit, als wir Eclipse zum Erstellen eines Projekts verwendeten, konnte der Speicherort von Java-Quellcode, Ressourcendateien, Testdateien, statischen Ressourcen und kompilierten Klassendateien nach Belieben platziert werden. Diese werden von den jeweiligen Unternehmen festgelegt. Die Architekten Sie haben das Projekt bei der Erstellung des Projekts eingerichtet und es auf der Grundlage ihrer Erfahrung definiert. Daher kann jedes Unternehmen eine andere Projektstruktur haben. Die menschliche Führung wird die Kosten unsichtbar erhöhen. Wenn jeder die gleiche Projektstruktur gemäß einer bestimmten Vorgehensweise übernimmt Spezifikation, wäre das nicht sehr praktisch? Jeder folgt einer bestimmten Vereinbarung und das Projekt verwendet dieselbe Struktur, wie zum Beispiel: Java-Dateien, Ressourcendateien, Tests Anwendungsfälle, statische Ressourcen, kompilierte Klassen, der Speicherort der Gläser nach dem Packen, usw. Der Speicherort verschiedener Dateien, diese Dinge, wenn alle Unternehmen, die Java-Entwicklung betreiben, zustimmen, können Sie nach Erhalt eines Projekts viel sparen.

1.6. Schmerzpunkt 6: Es gibt verschiedene Möglichkeiten, den Lebenszyklus von Projekten zu steuern

Für die Entwicklung sieht der Lebenszyklus eines Projekts wie folgt aus: Aufbau der Projektstruktur, Codierung, Ausführen von Testfällen, Kompilieren, Packen, Veröffentlichen in der Testumgebung und Veröffentlichen in der Produktionsumgebung. Zusätzlich zum Codieren wird die meiste Zeit kompiliert, gepackt und in der Testumgebung freigegeben. Dann beginnt der Test mit dem Testen, der Test findet einen Fehler, die Entwicklung ändert den Fehler weiter und führt dann einen Selbsttest und eine Kompilierung durch , verpacken und in der Testumgebung freigeben. Meistens wird die Arbeit des Ausführens von Komponententests, des Kompilierens, Verpackens und Veröffentlichens wiederholt. Wenn es keine automatische Kompilierung gibt, müssen wir jeden Prozess manuell bedienen. Einige Entwicklungen sind möglicherweise besser, und diese Vorgänge werden in automatisierte Skripte geschrieben, aber die automatisierten Skripte, die von jedem geschrieben werden, können unterschiedlich sein. Einige sind in Java geschrieben, andere sind in Java geschrieben in der Schale und so weiter.

Mit Ant später kann Ant die Ausführung von Testfällen, die Kompilierung, das Packen und die Veröffentlichung automatisieren. Die Flexibilität von Ant ist extrem hoch und die Kontrolle über die Details bleibt den Entwicklern selbst überlassen. Auch die von jeder Person geschriebenen Ant-Skripte sind unterschiedlich, was einer einheitlichen Wartung und Akzeptanz durch alle nicht förderlich ist.

Die oben genannten Prozesse sind fast alle Java-Projekte, die durchlaufen werden müssen, was eine notwendige Hochfrequenzoperation darstellt. Wenn sich alle Java-Entwickler auf der Welt auf die Struktur von Java-Projekten, den Speicherort von Testfällen und die Speicherung einigen können Der Speicherort der kompilierten Klassen, der Speicherort der Dateien nach dem Packen und die Automatisierungsskripte werden alle mit derselben Spezifikation entwickelt, sodass die Skripte, die jeder schließlich für die automatische Freigabe schreibt, ähnlich sind, die endgültige Veröffentlichungsadresse jedoch unterschiedlich ist Die anderen sind die gleichen. Das Skript wird stark vereinfacht und Neulinge werden sehr schnell loslegen können.

2. Was ist Maven?

Maven ist ein Artefakt, das alle oben genannten Probleme löst, und es ist das Evangelium aller Entwickler.

Die mit Maven erstellte Projektstruktur muss derselben Struktur folgen. Java-Quelldateien, Ressourcendateien, Testfallklassendateien und statische Ressourcendateien werden alle vereinbart. Jeder folgt dieser Vereinbarung. Wenn Ihr Projekt „Erstellt von Maven“ verwendet, rekrutieren Sie neue Leute müssen übernehmen. Wenn sie Maven verstehen, brauchen sie überhaupt keine Schulung und können die Struktur des gesamten Projekts verstehen, wenn sie auftauchen.

Maven definiert für jedes JAR ein eindeutiges Flag, das in Maven als Projektkoordinaten bezeichnet wird und über das Sie jede Version des JAR-Pakets finden können, die Sie verwenden müssen.

Maven löst automatisch das Problem der JAR-Abhängigkeit. Wenn Sie beispielsweise a-1.0.jar verwenden und a-1.0.jar von b-1.1.jar und c-1.5.jar abhängt, führen wir a-1.0.jar ein durch maven Danach werden b-1.1.jar und c-1.5.jar automatisch importiert.

Maven kann das Problem von Jar-Konflikten zwischen verschiedenen Versionen leicht lösen.

Maven erleichtert Entwicklern die Kontrolle des Lebenszyklus des gesamten Projekts, wie zum Beispiel:

mvn clear 可以清理上次已编译好的代码
mvn compile 可以自动编译项目
mvn test 可以自动运行所有测试用例
mvn package 可以完成打包需要的所有操作(自动包含了清理、编译、测试的过程)

Es gibt viele weitere nützliche Operationen. Da Maven alle Projektstrukturen vereinbart, werden diese Operationen in sehr einfache Befehle vereinfacht.

Wir haben einige Toolkits selbst entwickelt. Wenn wir sie für andere verwenden müssen, benötigen wir nur einen einfachen mvn installBefehl, um sie zu veröffentlichen und dann den Benutzer über die Koordinaten des Glases zu informieren, und der Benutzer kann es finden. Das Paket wird übertragen zu ihm.

Da die Struktur des Maven-Projekts vereinbart ist, ist es sehr bequem zu erweitern. Die verschiedenen oben genannten Maven-Befehle sind in Form von Plug-Ins integriert. Wenn Sie möchten, können Sie auch einige Maven-Plug-Ins entwickeln, die andere verwenden können, z as Das von Ali intern entwickelte Plug-In veröffentlicht das Projekt automatisch in der Alibaba Cloud, was für die Entwicklung und Veröffentlichung von Projekten sehr praktisch ist.

Werfen wir einen Blick auf die offizielle Erklärung von Maven: Maven ist ein automatisiertes Build-Tool, das von der Apache Software Foundation verwaltet wird und sich auf die Projektkonstruktion und das Abhängigkeitsmanagement für die Java-Plattform konzentriert .

Supongo que te gusta

Origin blog.csdn.net/qq_34272760/article/details/127060531
Recomendado
Clasificación