Was ist der Sinn der Verwendung von Ant, Maven und Buildr? wird nicht die Verwendung von Build in Eclipse oder Netbeans gut funktionieren? ich bin nur neugierig, was der Zweck und der Nutzen der erweiterten Build-Tools sind.
Antworten
Zu viele Anzeigen?-
Verwaltung von Abhängigkeiten : Die Build-Tools folgen einem Komponentenmodell, das Hinweise darauf gibt, wo man nach Abhängigkeiten suchen muss. In Eclipse / Netbeans müssen Sie von einem JAR abhängen und wissen nicht, ob dieses JAR aktualisiert wurde oder nicht. Bei diesen Build-Tools "wissen" sie über Aktualisierungen in den Abhängigkeiten Bescheid (im Allgemeinen aufgrund einer guten Integration mit Ihrem Source-Control-Repository), berechnen transitive Abhängigkeiten neu und stellen sicher, dass alles immer mit den neuesten Versionen gebaut wird.
-
Zugangskontrolle : Java hat, abgesehen von der Zugriffskontrolle auf Klassenebene, keine höhere Abstraktion. Mit diesen Build-Tools können Sie genau festlegen, welche Projekte von Ihnen abhängen sollen, und die Sichtbarkeit und den Zugriff auf einer höheren Granularitätsebene kontrollieren.
-
Benutzerdefinierte Steuerung : Der Eclipse/Netbeans-Build erstellt immer JAR-Dateien. Mit benutzerdefinierten Build-Mechanismen können Sie Ihr eigenes benutzerdefiniertes (firmeninternes) Archiv mit zusätzlichen Metadateninformationen erstellen, wenn Sie dies wünschen.
-
Plugins : Es gibt eine Vielzahl von Plugins, die mit Build-Tools kommen, die verschiedene Dinge während des Builds tun können. Von etwas Grundlegendem wie dem Generieren von Javadocs bis hin zu etwas mehr Nicht-Trivialem wie dem Ausführen von Tests und dem Erhalten von Codeabdeckung, statischer Analyse, Generierung von Berichten usw.
-
Transport : Einige Build-Systeme verwalten auch den Transport von Archiven - von einem Entwicklungssystem zu einem Verteilungs- oder Produktionssystem. Sie können also Transportrouten, Zeitpläne und dergleichen konfigurieren.
Werfen Sie einen Blick auf einige Server für kontinuierliche Integration wie CruiseControl o Hudson . Auch die Funktionsseite von Maven gibt einen Einblick in das, was Sie wissen wollen.
Zusätzlich zu all den anderen Antworten. Der Hauptgrund, warum ich meine Projekte baubar halte, ohne gezwungen zu sein, NetBeans oder Eclipse zu verwenden, ist, dass es so viel einfacher ist, automatische (und kontinuierliche) Builds einzurichten.
Es wäre (im Vergleich dazu) ziemlich kompliziert, einen Server einzurichten, der irgendwie Eclipse startet, den Quellcode aus dem Repository aktualisiert, alles baut, eine E-Mail mit dem Ergebnis verschickt und die Ausgabe irgendwo auf eine Festplatte kopiert, wo die letzten 50 Builds gespeichert sind.
Wenn Sie ein einzelner Entwickler oder eine sehr kleine Gruppe sind, kann es so aussehen, als wäre ein Build-System nur ein zusätzlicher Aufwand. Mit zunehmender Anzahl von Entwicklern wird es jedoch schnell schwierig, alle Änderungen zu verfolgen und sicherzustellen, dass die Entwickler auf dem gleichen Stand bleiben. Ein Build-System verringert die Steigerungsrate dieser Gemeinkosten, wenn Ihr Team wächst. Denken Sie an die Probleme bei der Erstellung des gesamten Codes in Eclipse, wenn mehr als 100 Entwickler an dem Projekt arbeiten.
Ein zwingender Grund für ein separates Build-System ist es, sicherzustellen, dass das, was an Ihre Kunden geliefert wird, aus einer spezifische Version des Codes, die in Ihr SCM eingecheckt wurde . Dies beseitigt eine ganze Reihe von "funktioniert auf meiner Box"-Problemen, und meiner Meinung nach ist dieser Vorteil allein schon durch die geringere Supportzeit den Aufwand wert. Isolierte Builds (zum Beispiel auf einem CI-Server ) heben auch Probleme in der Entwicklung hervor, z.B. wenn partielle oder brechende Änderungen übertragen wurden, so dass Sie die Chance haben, Probleme frühzeitig zu erkennen.
Ein Build in einer IDE baut, was auch immer gerade auf der Box ist, während ein eigenständiges Build-System einen reproduzierbaren Build direkt aus dem SCM erzeugt. Natürlich kann dies auch innerhalb einer IDE geschehen, aber AFAIK nur durch den Aufruf von Ant oder Maven, die alle Build-Schritte durchführen.
Dann gibt es natürlich noch die direkte Vorteile von Build-Systemen. Ein modulares Build-System reduziert Copy-Paste-Probleme und kümmert sich um die Auflösung von Abhängigkeiten und andere Build-bezogene Probleme. Diese sollte ermöglichen es den Entwicklern, sich auf die Bereitstellung von Code zu konzentrieren. Natürlich bringt jedes neue Tool seine eigenen Probleme mit sich, und die damit verbundene Lernkurve kann den Eindruck erwecken, dass ein Build-System ein unnötiger Overhead ist (googeln Sie einfach Ich hasse Maven um eine Vorstellung zu bekommen).
Das Problem bei der Erstellung aus der IDE ist, dass es eine Vielzahl von Einstellungen gibt, die die Erstellung beeinflussen. Wenn Sie ein Build-Tool verwenden, werden alle Einstellungen in einer mehr oder weniger lesbaren Form in einem kleinen Satz von Skripten oder Konfigurationsdateien zusammengefasst. Dies ermöglicht es im Idealfall jedem, einen Build mit kaum manuellen Einstellungen durchzuführen.
Ohne das Build-Tool könnte es in, sagen wir, einem Jahr nahezu unmöglich werden, Ihren Code überhaupt zu kompilieren, weil Sie alle Einstellungen zurückentwickeln müssen.
- See previous answers
- Weitere Antworten anzeigen