Hi all,
Nachdem ich mich gerade wieder mal 2 Tage mit NAnt herumgeschlagen habe: Wie sind eure Erfahrungen mit alternativen Build Systemen im .NET Bereich?
tx,
Erich
Hallo Erich,
ich bin vor einigen Wochen auf Rake umgestiegen und mit dieser Entscheidung sehr zufrieden. Das Build Script ist im Projekt auf ungefähr ein Drittel geschrumpft und leserlicher.
Ich hab das Skript bei GitHub eingestellt wenn du es dir anschauen möchtest:
http://github.com/agross/rake-me/tree/master
Hinweis: Das rakefile ist 1:1 aus dem Projekt übernommen.
Wer F# lernen möchte kann sich FAKE – F# Make von Steffen Forkmann anschauen.
Beste Grüße,
Alex
--~--~---------~--~----~------------~-------~--~----~
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe
"altnetde".
Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an altn...@googlegroups.com
Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an
altnetde+u...@googlegroups.com
Weitere Optionen finden Sie in dieser Gruppe unter http://groups.google.com/group/altnetde?hl=de
-~----------~----~----~----~------~----~------~--~---
Tx für die Rückmeldungen!
meine kürzliche Maven-Erfahrung ist einer der Gründe, warum ich nach Alternativen suche. Wer einmal die gute Luft der Konvention geschnuppert hat, will nicht mehr zum Skripten auf Händen und Knien zurück... leider brauch ich eher was OSS-mäßiges, werd' mir den FinalBuilder aber trotzdem sicher mal anschauen. Wenn Ralf und Alexander so davon begeistert sind, muss das wohl einen Grund haben ;-)
-Erich
schliesse mich an - das sieht tatächlich deutlich besser aus!
From:
altn...@googlegroups.com [mailto:altn...@googlegroups.com] On Behalf Of Christian
Deger
Sent: Wednesday, August 05, 2009 1:14 PM
To: altn...@googlegroups.com
Subject: [altnetde] Re: .NET Build Systeme
Hallo Alex,
Wenn ich so etwas schreiben möchte, sitze ich ja erstmal eine Woche
nur daran, das Script zu schreiben ... oder ich kopiere mir ein altes
... aber das widerspricht ja dem DRY Prinzip ...
| Da sind einfach viel zu viele Dinge, die auch per
| Konventionen gelöst werden könnten und mögliche Fehlerquellen gibt es
| sehr viele.
An welche Dinge hast du dabei konkret gedacht?
| Wenn ich so etwas schreiben möchte, sitze ich ja erstmal eine Woche
| nur daran, das Script zu schreiben ...
Aus diesem Grund darfst du gern meins oder die anderen (raken, rubicant,
rake-dotnet, etc.) als Basis verwenden. Bei FinalBuild fällt der
Einarbeitungsaufwand ebenfalls an.
| oder ich kopiere mir ein altes
| ... aber das widerspricht ja dem DRY Prinzip ...
Build Skripte beinhalten meiner Erfahrung nach immer Anteile die auf das
Projekt zugeschnitten sind. Den allgemeingültigen Rest kopiert man (aus
meiner Sicht kein DRY /innerhalb/ eines Projekts). Man beginnt einfach mit
einer etablierten Baseline. Ist es bei FinalBuilder anders?
Was ist die Alternative zum Neuschreiben oder Kopieren? Kein Build Skript?
No-Go.
Welches Buildsystem verwendest du?
Alex
--
Alexander Groß
| Da hilft es auch gar nix, dass das Open Source ist. Soviel kann ich
| gar nicht sparen, dass es mir die Schmerzen wert wäre.
du kennst bestimmt das Prinzip, dass ein Developer jedes Jahr eine neue
Sprache lernen soll. 2009 ist bei mir Ruby an der Reihe. Meine Schmerzen
halten sich also in Grenzen ;-)
Am 6. August 2009 13:01 schrieb Alexander Groß <agr...@therightstuff.de>:
> Christian,
>
> | Da sind einfach viel zu viele Dinge, die auch per
> | Konventionen gelöst werden könnten und mögliche Fehlerquellen gibt es
> | sehr viele.
>
> An welche Dinge hast du dabei konkret gedacht?
Z.B. an alle Stellen, wo Strings vorkommen. Nur wenn ich irgendwo ein
Stern oder Slash vergesse funktioniert es nicht mehr wie gewünscht.
Und warum sollte ich jedesmal wieder angeben, dass die cs
projektdateien, die Endung .csproj haben oder die NCover Ergebnisse in
einer Datei namens Coverage.xml abgelegt werden sollen? Oder die
Testdateien im Verzeichnis Test liegen? Das könnte alles per
Konvention voreingestellt (und bei Bedarf geändert) werden. Was die
Fehleranfälligkeit IMHO wesentlich erhöht.
>
> | Wenn ich so etwas schreiben möchte, sitze ich ja erstmal eine Woche
> | nur daran, das Script zu schreiben ...
>
> Aus diesem Grund darfst du gern meins oder die anderen (raken, rubicant,
> rake-dotnet, etc.) als Basis verwenden. Bei FinalBuild fällt der
> Einarbeitungsaufwand ebenfalls an.
FinalBuild habe ich noch nicht ausprobiert, deshalb kann ich dazu nichts sagen.
>
> | oder ich kopiere mir ein altes
> | ... aber das widerspricht ja dem DRY Prinzip ...
>
> Build Skripte beinhalten meiner Erfahrung nach immer Anteile die auf das
> Projekt zugeschnitten sind. Den allgemeingültigen Rest kopiert man (aus
> meiner Sicht kein DRY /innerhalb/ eines Projekts). Man beginnt einfach mit
> einer etablierten Baseline. Ist es bei FinalBuilder anders?
Warum sollte dort das DRY Prinzip nicht gelten? Was ist wenn im
Orginal ein Fehler gefunden oder eine Verbesserung eingebaut wird?
>
> Was ist die Alternative zum Neuschreiben oder Kopieren? Kein Build Skript?
> No-Go.
Die Alternative ist, dass alles was nicht projekt-spezifisch ist,
nichts in einem "Build-Skript" zu suchen hat.
>
> Welches Buildsystem verwendest du?
Da ich zur Zeit kein .NET Projekt habe, kann ich hier nur aus der Java
Welt sprechen. Dort gibt es Maven, welches sicher auch Probleme hat,
aber mir vom Ansatz her am Besten gefällt. Es wird so viel wie möglich
"Convention over Configuration" verwendet, und die Einbindung z.B. von
Coverage oder Style Tools nur in der Einbindung von Plug-Ins besteht:
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
<version>${clover.version}</version>
</plugin>
Es gibt ein Projekt, welches Maven verwendet um .NET Projekte zu
bauen: NPanday (http://npanday.codeplex.com/). Ist noch relativ jung,
mal schauen, wie es sich entwickelt.
>
> Alex
>
> --
> Alexander Groß
>
Christian Raschka
| Z.B. an alle Stellen, wo Strings vorkommen. Nur wenn ich irgendwo ein
| Stern oder Slash vergesse funktioniert es nicht mehr wie gewünscht.
das ist bei allen Skriptsprachen so und auch bei kompiliertem Code. Und
wahrscheinlich auch bei Maven, wenn man dort angibt wo vom Plugin zu
bearbeitenden die Projekte/Dateien liegen.
| Das könnte alles per
| Konvention voreingestellt (und bei Bedarf geändert) werden. Was die
| Fehleranfälligkeit IMHO wesentlich erhöht.
Die Fehleranfälligkeit wird erhöht? ;-)
Die Konventionen bzw. Defaults finden sich in der properties.yml-Datei. Dort
kann man sicher auch noch einiges einbauen, z. B. welche Endung die
Projektdateien haben.
| > | Wenn ich so etwas schreiben möchte, sitze ich ja erstmal eine Woche
| > | nur daran, das Script zu schreiben ...
Nach wie vor gilt aus meiner Sicht, dass es auch bei Maven seine Zeit dauert
bevor das Build Skript/die Pluginkonfiguration steht. Da wird man selbst mit
visuellen Tools nicht umhin kommen.
| > | oder ich kopiere mir ein altes
| > | ... aber das widerspricht ja dem DRY Prinzip ...
| >
| > Build Skripte beinhalten meiner Erfahrung nach immer Anteile die auf das
| > Projekt zugeschnitten sind. Den allgemeingültigen Rest kopiert man (aus
| > meiner Sicht kein DRY /innerhalb/ eines Projekts). Man beginnt einfach
mit
| > einer etablierten Baseline. Ist es bei FinalBuilder anders?
|
| Warum sollte dort das DRY Prinzip nicht gelten? Was ist wenn im
| Orginal ein Fehler gefunden oder eine Verbesserung eingebaut wird?
Im oben verlinkten Rake-Skript findet sich der Ordner tools/Rake, wo die
Basisfunktionalität liegt. Die kannst du per svn:externals oder Git
Submodules einbinden und somit wiederverwenden. Was und wie gebaut wird,
gehört IMHO dennoch in jedes Projekt weil spezifisch.
| Es wird so viel wie möglich
| "Convention over Configuration" verwendet, und die Einbindung z.B. von
| Coverage oder Style Tools nur in der Einbindung von Plug-Ins besteht:
|
| <plugin>
| <groupId>com.atlassian.maven.plugins</groupId>
| <artifactId>maven-clover2-plugin</artifactId>
| <version>${clover.version}</version>
| </plugin>
Mein erster Gedanke dazu: Ugh, XML. Wie groß werden solche Skripte? Bindet
man letztenendes nur noch eine Reihe von Plugins ein (= das
Projektspezifische am Build Skript)?
Wie gesagt, Convention over Configuration kannst du auch in Rake oder einem
anderen Build Tool nachbauen.
Alex
--
Alexander Groß
http://therightstuff.de/
| -----Original Message-----
| From: altn...@googlegroups.com [mailto:altn...@googlegroups.com] On
| Behalf Of Steve Wagner
| Sent: Thursday, August 06, 2009 5:38 PM
| To: altn...@googlegroups.com
| Subject: [altnetde] Re: .NET Build Systeme
|
|
danke für die Klärung - ich denke, du hast den Nagel auf den Kopf getroffen. Es ist der imperative Ansatz von NAnt, MSTest & Co, der mich so nervt. Und seit meinem Maven-Erstkontakt wünsche ich mir ein Tool auf der dunklen Seite, dass dieselben starken Konventionen bietet und erlaubt, einfach nur deklarativ die Abhängigkeiten anzugeben bzw. Ouput-Features zu "aktivieren" (z.B. NCover, NUnit etc.) - fertig. Ich bin bereit, mich jeder Konvention zu unterwerfen, wenn ich dafür keine build-Skripte debuggen muß.
Maven ist hier meiner Meinung nach sogar ein sehr gutes Beispiel für eine "starke" Konvention: Es erlaubt, die "guten" Dinge einfach zu machen, lässt die "schlechten" Dinge (workarounds, hacks whatever) aber durchaus zu - nur muß man halt was dafür tun. Um die "guten" Tasks zu meistern hab ich genau 3h Einarbeitungszeit in ein großes Projekt ohne jegliche Maven-Vorkenntnisse gebraucht. Um eine Lösung für einen Spezialfall einzubauen 1 Tag. Meistens beschränkt sich das sowieso lediglich auf einen Plugin-Download und dessen Einbindung.
-Erich
From:
altn...@googlegroups.com [mailto:altn...@googlegroups.com] On Behalf Of Sebastian
Jancke
Sent: Thursday, August 06, 2009 8:04 PM
To: altn...@googlegroups.com
Subject: [altnetde] Re: .NET Build Systeme
Ich habe noch ein wenig über
die Diskussion nachgedacht. Es erscheint mir mehr und mehr, dass mir die
"DSL" eigentlich ziemlich egal ist. Ich sehe aber einen gravierenden
Unterschied zwischen prozeduralem Ant/Rake/..., teilweise deklarativen
Make-Derivaten und deklarativen Ansätzen wie Maven.
Zum Thema Dependency Management haben die ALT.NETter aus Schottland das Projekt Horn gerade in Entwicklung. Ich hab es mir nur mal kurz überflogen, falls es für jemanden von euch von Interesse ist.
+1 für eine Session auf dem Open Space.
From:
altn...@googlegroups.com [mailto:altn...@googlegroups.com] On Behalf Of Sebastian
Jancke
Sent: Thursday, August 06, 2009 8:04 PM
To: altn...@googlegroups.com
Subject: [altnetde] Re: .NET Build Systeme
Ich habe noch ein wenig über
die Diskussion nachgedacht. Es erscheint mir mehr und mehr, dass mir die
"DSL" eigentlich ziemlich egal ist. Ich sehe aber einen gravierenden
Unterschied zwischen prozeduralem Ant/Rake/..., teilweise deklarativen
Make-Derivaten und deklarativen Ansätzen wie Maven.
--~--~---------~--~----~------------~-------~--~----~
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe
"altnetde".