Es ist die Umgebung, die ich in meinem Unternehmen eingerichtet habe und mit der ich gerade arbeite.
Beschreibung der Umgebung
Wir sind ein Team von 4 Entwicklern , die an einem Java-Desktop-Projekt arbeiten . Der Quellcode befindet sich unter Mercurial , wobei das Haupt-Repo auf unserem Entwicklungsserver gehostet wird. Wir verwenden meistens TortoiseHg , um mit Mercurial zu arbeiten. Die Projekte, die wir eröffnen, sind auf BitBucket . Das Projekt wird mit Maven gebaut . Die IDE, die wir verwenden, ist Netbeans , was mit Maven beeindruckend gut funktioniert (auch mit Mercurial funktioniert es einwandfrei).
Auf unserem Entwicklungsserver wird Archiva ausgeführt , ein Proxy-Maven-Repository. Wir verwenden maven, um das Projekt zu erstellen, aber wir verwenden es auch, um es auszuführen (mvn exec), um die generierten Artefakte für Archiva bereitzustellen (mvn release) und um eine Assembly aus den von Archiva gehosteten Artefakten zu generieren (mvn Assembly).
Wir haben auch einen Redmine- Bugtracker, der die Mercurial-Repos kennt. Wir verwenden einen RSS-Client , um über die Projektaktivität informiert zu werden (von Redmine und Mercurial). Wir haben auch einen Jabber- Server, um Nachrichten und Dateien aneinander zu senden.
Wir haben einen Hudson- Server (kontinuierliche Integration) und einen Sonar- Server (Code-Metriken) eingerichtet. Aber in der Praxis verwenden wir es nicht wirklich.
Wir haben die Wahl zwischen Windows oder Linux
Schritte, um eine Veröffentlichung zu machen
Beispiel für die Veröffentlichung einer Version 1.1.3
# tags the VCS, updates all the version numbers in the maven config file
mvn --batch-mode release:prepare -DreleaseVersion=1.1.3 -DdevelopmentVersion=1.1.4-SNAPSHOT
# performs a clean build, runs all tests, deploys to the server
mvn release:perform
# creates a unique jar (the final product) from the previously deployed artifacts (no recomilation involved)
<update the version number in a config file to 1.1.3>
mvn assembly:assembly