Schlagwort-Archiv: Sourceforge

SCM: CVS, SVN, Git hilfreich auch für den einzelnen Entwickler

Wie das Leben so spielt

Vor kurzem konnte ich wieder am eigenen Leib verspüren, wie wertvoll Source Controll Management sein kann. Bei der Auftrennung eines Softwareprojekts habe ich Klassen eines Maven Moduls, in ein anderes neues Modul verschoben, oder besser verschieben lassen. Eclipse bietet dafür eine “Move…” Funktion. Beim Test der Auftrennung fand das Hauptprojekt jedoch das neue Modul nicht mehr. Wie immer zuerst auf der falschen Fährte, habe ich erst den Build Prozess in Zweifel gezogen und Maven des Missmanagements verdächtigt. Als sich dort keine Unstimmigkeit finden lies, habe ich doch tatsächlich in die Verzeichnisse des neuen Modul gesehen. Die Lehr aus der Geschicht, traue Automatismen nicht. Die Klassen waren zwar erfolgreich aus dem ursprünglichen Modul entfernt worden, scheinen aber nie im neuen Modul angelegt worden zu sein. Die Arbeit der letzten Woche im Kübel!

Wäre da nicht mein SCM! So war der Missstand in ein paar Klicks erledigt, indem ich die fehlenden Klassen aus dem Projekt-SVN wieder herstellte. Als hätte ich eine Vorahnung gehabt, sicherte ich den gesamten veränderten Code über das Versionierungstool, bevor ich die Klassen von Eclipse verschieben lies.

Ob good old CVS, weitverbreitetes SVN, das aktuelle iSCM: Git oder sonstige Alternativen wie zB Mercurial oder Perforce, sie alle hätten mir in dieser Situation den Hals gerettet. Neben dem kollaborativen Nutzen, der sich ist vor allem bei größeren Projekten bemerkbar macht, ist vor allem die Sicherung der Arbeitsleistung ein wesentlicher Aspekt von Versionsverwaltungs Software, solange man einen wichtigen Punkt nicht vergisst: Man muss Änderungen auch einchecken, und das regelmäßig!

Versionsverwaltung für alle

Es gibt zahlreiche Dienstleister die Versionsverwaltungssoftware gegen mehr oder weniger Geld zur Verfügung stellen. Hier möchte ich drei der bekanntesten vorstellen.

Sourceforge

In meinem Fall konnte ich auf die Strukturen des auf Open Source Projekte spezialisierten Sourceforge bauen und meinen Code dort ins SVN committen, aber auch die alternativen Versionsverwaltungstools bietet Sourceforge zur Auswahl an. Für Open Source Projekte findet man hier neben einer oder mehreren Versionsverwaltungen alles was ein Projekt sich wünschen kann, und das umsonst.

http://www.sourceforge.net

Google Code

Etwas abgespeckt im Funktionsumfang, im Vergleich zu Sourceforge, ist Google Code, welches jedoch immer noch ein solides Rundumpaket zum Projekthosting anbietet.

http://code.google.com

Github

Der Renner aktuell, vorallem unter Ruby und Javascript Entwicklern, ist Github, welches sich, wie der Name aufzeigt, auf Git spezialisert hat. Auch Github bietet für Open Source Projekte seine Dienste gratis an. Der Code ist dann jederzeit für alle zugänglich und kann für alle geforked werden. Für einen monatlich zu entrichtenden Aufpreis sind hier jedoch private Repositories zu erhalten.

http://www.github.com

Host it yourself

Subversion, Git und Co können meist kostenlos bezogen werden und auch selbst gehostet werden. Hat man einen eigenen Server muss man seinen Sourcecode nicht mehr in die Hände dritter geben. Ohne Server rentiert es sich immernoch die Versionsverwaltung lokal auf dem Entwicklungsrechner abzuhandeln. Wenn auch meist mit ein paar Einschränkungen in der Handhabung.

http://subversion.tigris.org/

http://git-scm.com/

Happy coding!

Ähnliche Artikel:

Maven Repository auf Sourceforge

Projektabhängigkeiten

Entwickelt man ein Software-Projekt, kommt man wie ich zu dem Punkt, an dem die eigene Software von fremden Bibliotheken abhängig ist. Im Falle von TrayRSS ist das zum Beispiel: hibernate, jdom, rom, junit, log4j. Lauter namhafte Bibliotheken, die auch in den öffentlichen Repositories von Maven verfügbar sind. TrayRSS setzt seit kurzem auf Maven um alle Abhängigkeiten zu sammeln. Doch TrayRSS setzt auch auf Bibliotheken die vielleicht weniger bekannt sind:

Leider sind beide Librarys in keinem Repository vertreten, sodass diese Abhängigkeiten nicht ohne weiteres über Maven aufgelöst werden können.

Damit es nun einem dem Projekt Fremden dennoch möglich ist den Code aus dem Versionierungssystem beziehen und das Projekt zu bauen, kann man ihm natürlich die Bibliotheken oder die Links dazu zur Verfügung stellen. So ist jeder für sich in der Lage die fehlenden Sourcen nachzuziehen und manuell ins lokale Repository zu laden. Ein Aufwand, der dank den Möglichkeiten eines eigenen Webspaces, wie ihn auch Sourceforge bietet, vermieden werden kann.

Aufbau eines Maven Repository

Ein Maven Repository ist eigentlich nichts anderes als ein Haufen Ordner mit ein paar Dateien, die nach folgendem Schema aufgebaut sind:

/gruppe/artefakt/version/artefakt-version.jar

Dabei entspricht die Gruppe den Regeln, die wir schon von Java Packages kennen. Jedes Unterpaket getrennt durch einen Punkt entspricht einem eigenen Verzeichnis. Der Bezeichner Artefakt entspricht der ArtefaktID welches im POM der jeweiligen Bibliothek definiert ist. Versionsnummer und Artefakt kombiniert ergibt die Benennung des Jar Files, welches darin enthalten ist.

Für die Auflösung der Abhängigkeiten des jeweiligen Artefakts liegt neben der Jar Datei auch eine POM Datei auf, in der die entsprechenden Informationen bereitgestellt werden. Beispielhaft der Inhalt einer solchen POM Datei:

<?xml version="1.0" encoding="ISO-8859-1"?>
  <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>at.nullpointer</groupId>
  <artifactId>paketname</artifactId>
  <version>0.0.1</version>
  <packaging>jar</packaging>
  <name>paketname</name>
  <description>
    Beschreibung des Pakets
  </description>

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.4.3</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

Hier lässt sich auch die Information zur Ordnerstruktur hervorragend auslesen.

Zusätzlich können noch diverse zusätzliche Datein vorhanden sein um zB die md4 Checksum zu verifizieren oder ähnliches.

Internes Repository im Projekt Web

TrayRSS ist ein Open Source Projekt und wird auf Sourceforge gehostet. Damit wir nun unsere Bibliotheken allen Usern zur Verfügung stellen können greifen wir auf die Möglichkeiten von Sourceforge zurück. Hier wird unter anderem Webspace zum Hosten der Projektseite angeboten, auf den man projektrelevante Daten ablegen kann. Also auch unser Repository.

Wie man sich über SFTP dorthin verbindet wird in folgendem Wikieintrag von Sourceforge aufgezeigt: http://sourceforge.net/apps/trac/sourceforge/wiki/Project%20web

SFTP fähige Clients unter Windows sind z.B. WinSCP und Filezilla. Wenn noch nicht installiert findet man unter Linux ein entsprechendes Commandline Tool in der Paketverwaltung der bevorzugten Distribution.

Nun wird einfach ein Verzeichnis unter htdocs angelegt z.B. mit dem Namen repository. In dieses Verzeichnis spielen wir nun wie oben dargestellt eine entsprechende Maven Verzeichnisstruktur ein.

Hier die Beispielhafte Verzeichnis- und Dateistruktur für jNotification:

repository
----de
--------jutzig
------------jnotification
----------------0.3
--------------------jnotification-0.3.jar
--------------------jnotification-0.3.pom

Zugang zum Repository

Dann fehlt nur noch ein Eintrag ins POM des Projektes nach folgendem Beispiel:

<repositories>
  <repository>
    <id>projekt-repository</id>
    <name>projekt Repository</name>
    <url>http://projekt.sourceforge.net/repository/</url>
  </repository>
</repositories>

Nun noch die Abhängigkeiten ganz normal in Maven eingetragen und Maven kann diese nun z.B. mit mvn eclipse:eclipse aus dem Internen Repository auslesen und das Projekt erfolgreich bauen.

Ähnliche Artikel:

Finally it arrives – TrayRSS goes gold

Finally it’s done, TrayRSS 1.0 arrived.

After getting a very low amount of responses to the beta, i’ve decided to release it into 1.0.
Go TrayRSS, have a nice life! And if there are any problems, feel free to come back, to get an update.

At the Moment there are no Open Requests, so the developement will stand still. I’m glad it’s done, and i hope you will enjoy the software as much as i enjoyed to write it. If there are any suggestions feel free to contact me.

To read the complete changes take a look here

You can download TrayRSS 1.0 Final here

As always I’m looking forward to receive some feedback ;)

Have fun

Ähnliche Artikel:

TrayRSS 0.5 Alpha

Hi there!

I’m proud that i can offer you a new alpha version von TrayRSS. In version 0.5 the main new features are:
– multilanguage support (no extra release necessary)
– complete management of feeds that will be monitored
– persistence of the complete configuration
– vacation selection updated
– few bugfixes

I want to excuse myself, cause the last release wasn’t complete. Necessary configfiles where located in the jar but the program didn’t find them, cause of a testing fault. I’ve discoverd it very late – 110 Downloads but no feedback. In this version it should be fixed.

Hope you enjoy my release
Greets

Here is the download link:

https://sourceforge.net/projects/trayrss/files/trayrss/0.5%20Alpha/TrayRSS0.5-b76alpha.zip/download

Ähnliche Artikel:

TrayRSS

Eines meiner Projekte habe ich auf Sourceforge gehostet und es somit den Open Source Paradigmen unterworfen. Zugegeben, anfangs etwas gewöhnungsbedürftig, wenn man darüber nachdenkt, dass sein eigenes Werk von jedermann einfach genutzt werden kann, ohne dass man selbst daran teilhaben kann, oder informiert werden muss, oder gar direkt was davon hat. Aber das Angebot von Sourceforge ist derart umfassend, dass man diese Bedenken schnell wegschwemmen kann mit den Möglichkeiten die einem dabei geboten werden.
Mailinglisten, Trac, Webspace und Datenbank für die Projekthomepage, SVN und viel mehr motivieren am eigenen Werk zu schrauben. Vom Leitsatz

release early, release often

ist Sourceforge stark geprägt, wird man für Aktivität auch stark im Ranking belohnt, was sich wiederum auf die Anzahl der Besucher des Projektes auswirkt und somit schnell ein Erfolgsgefühl aufkommen lässt. Toll gemacht.

Nicht vergessen darf man dabei, dass jede Menge Arbeit hinter so einem Projekt steckt, von der Konzeption bis hin zur fertigen Version vergeht so einige Mannstunden und man sollte sich ein derartiges Projekt vor einreichen bei Sourceforge gut überlegen. Auch wenn ein Open Sourceprojekt eine Art gemeinnützigen Beigeschmack hat, sollte auch dies nicht als Spaßsache fürs Seelenheil abgetan werden.

Zu meinem Projekt selbst mal ein simples Copy Paste der Projektbeschreibung:

The goal of this tool is to offer the user a fast and cheap way to
read news given by an RSS or ATOM Feed by Tray Notifications. To
read the news, it will open a browser.

Entwickelt wird es unter der GPL 3.0 Lizenzin Java. Zu nutzen macht es sich die Bibliotheken von ROME und von JDOM.

Wie auch immer, ich werde hier in meinem Blog auch weiterhin über die Entwicklung dieses Projekts berichten. Stay tuned!

https://sourceforge.net/projects/trayrss/

Ähnliche Artikel: