kennt jemand ein gutes Beispiel für ein java - makefile. Ich stelle mir da sowas vor, wie man es in C++ macht. (C++ habe ich das im gegensatz zu Java schon einmal geamcht/ausprobiert.)
Es geht nicht um ein tolles optimiertes makefile, sondern um unabhängigkeit von Entwicklungsumgebung und Betribssystem.
Optimal währe ein makefile - Export aus Eclipse. (Habe da leider nichts gefunden.)
Wir benutzen dafür Antskripte um die Software zu bauen.
Dort werden die benötigten Bibliotheken genau angegeben. Obwohl das eine Projekt Server/Client und Plugins enthält, ist das Ergebnis x JARs, die jeweils nur Client / Server und oder Plugins enthalten.
Gibt es ein Grund, wieso genau makefiles benutzt werden sollen?
mhm... Ant als überholt anzusehen halt ich für falsch, ausserdem ist genaugenommen Gant in deiner Auflistung auch nicht richtig. Maven3 ;-) und Gradle sind komplette Lifecycle-build-dependency tools. Gant ist einfach Ant in Groovy und Ant ist eben Ant.
Ich sehe keinen falls Ant als überholt an. Ganz im Gegenteil.
Vieleicht würden die meisten Leute dies nicht gerade zum bauen von Anwendungen nutzen, weil es da vermeidlich bessere Werkzeuge, wie auch Maven, gibt.
Leider kann ich niemanden zu Maven raten, es sei den er baut gerade sein Projekt auf und ist in der Planungsphase. Andernfalls erstickt man in Konfigurationen.
Auch kann das automatische zuladen von Depedencies ganz schnell nach hinten losgehen. Und dann hat man eine Software, die eigenltich nur 1 MB hat, mit einer 100 MB Auslieferung.
Wenn man Maven benutz, dann sollte man es voll integrieren und den kompletten Projekt Lifecycle (nenne ich es mal) umsetzen. Auf keinen Fall nur fürs bauen (builden) nutzen und dann für JUnits was anders.. etc..
Leider kann ich niemanden zu Maven raten, es sei den er baut gerade sein Projekt auf und ist in der Planungsphase. Andernfalls erstickt man in Konfigurationen.
Ja, die Migration von Projekten nach Maven ist nie schön.
Auch kann das automatische zuladen von Depedencies ganz schnell nach hinten losgehen. Und dann hat man eine Software, die eigenltich nur 1 MB hat, mit einer 100 MB Auslieferung.
Wenn man Maven benutz, dann sollte man es voll integrieren und den kompletten Projekt Lifecycle (nenne ich es mal) umsetzen. Auf keinen Fall nur fürs bauen (builden) nutzen und dann für JUnits was anders.. etc..
Nö, Maven ist ein Build Tool und zB. kein Deployment Tool, da gibt es nämlich andere Anforderungen.
Das ausführen der tests etc. gehört doch zum einen modernen/"agilen" Build, selbstprüfend eben
Leider kann ich niemanden zu Maven raten, es sei den er baut gerade sein Projekt auf und ist in der Planungsphase. Andernfalls erstickt man in Konfigurationen.
falsch - wenn man es richtig macht nicht... Ich habe gerade das Umbauen von über 100 Einzelprojekte hinter mir. Es ist je nach existierender Struktur schwerer, aber ersticken in Konfiguration ist dann meist aufgrund unverständnis oder falscher herangehensweise
Auch kann das automatische zuladen von Depedencies ganz schnell nach hinten losgehen. Und dann hat man eine Software, die eigenltich nur 1 MB hat, mit einer 100 MB Auslieferung.
falsch - wenn man es richtig macht nicht... Ich habe gerade das Umbauen von über 100 Einzelprojekte hinter mir. Es ist je nach existierender Struktur schwerer, aber ersticken in Konfiguration ist dann meist aufgrund unverständnis oder falscher herangehensweise
Möglicherweise war meine Wartwahl einfach ungeschickt. Aber ich denke im Prinzip sind wir uns hier einig, das es Know-How benötigt und nicht trivial ist.
Bei einem Build per Hand mit Ant, kann ich die Dependencys viel einfacher bestimmen und steuern. Bei einem vergleichbaren Aufwand, könnte es zu den von mir beschriebenen Auswirkungen kommen, wobei der Umfang , den ich nannte ich eher für übertrieben halte, als tatsächlich anzunehmen ist.
Bei einem Build per Hand mit Ant, kann ich die Dependencys viel einfacher bestimmen und steuern. Bei einem vergleichbaren Aufwand, könnte es zu den von mir beschriebenen Auswirkungen kommen, wobei der Umfang , den ich nannte ich eher für übertrieben halte, als tatsächlich anzunehmen ist.
Falsch.
Ich hab keine Ahnung woher du diese falsche "Wissen" nimmst, aber sicherlich nicht aus Erfahrung mit Maven2.
Mit Ant kann man die Dependencies nur mit mehr Aufwand bestimmen & steuern, dazu braucht man nämlich Ivy, sonst hat man mit Ant gar kein Dependency Management und muss alles (!) manuell machen, und dann auch noch ohne Metainformationen über Dependencies, oder siehst du einer Jar an welche anderen Jars es braucht?
Nutzt ihr denn Ant + Ivy, oder habt ihr gar kein Dependency Management?