Montag, 30. August 2010

Vollständige JARs mit Ant erstellen

In Maven gibt es das sehr nützliche Shade Plugin (siehe http://programming-2.blogspot.com/2010/05/maven-shade-plugin.html) mit dem man aus seinem Projekt ein JAR erstellen kann, in dem alle abhängigen Bibliotheken enthalten sind und zur Laufzeit auch gefunden werden. Dies kann mit ANT wie im folgenden Bild realisiert werden.
Jetzt kann man dieses JAR z.B. via SCP verteilen.

Freitag, 27. August 2010

And the winner is ... ANT

Heute bin ich mit meinem ersten Projekt von Maven zu Ant migriert. Der Aufwand ist überschaubar und das neue Ant-File auch. Das Maven-File umfasste 92 Zeilen wohingegen das Ant-File nur 58 Zeilen umfasste. Eine Ersparnis von  37%, nicht mitgerechnet habe ich da die notwendigen Erweiterungen der Maven Konfigurationsdateien. Leider habe ich noch kein Werkzeug gefunden, dass bei diesen Vorgang unterstützt.
Jetzt funktioniert alles wie gedacht nur das Dependency Management muss ich noch per Ivy ergänzen. Am Besten geht man wie folgt vor:

  1. Sichern des aktuellen Standes des Projekts z.B. im SVN (kurze Anleitung zum Aufsetzen und starten eine SVN Servers unter Linux)
  2. Erzeuge ein neues Verzeichnis im Root-Verzeichnis des Projekts, welches die benötigten Bibliotheken aufnimmt z.B. mkdir lib/
  3. Zeige dir alle von Maven verwalteten Bibliotheken an in dem die pom.xml öffnest.
  4. Kopiere alle direkt abhängigen Bibliotheken aus dem lokalen Maven Repository in das neue Verzeichnis lib, cp /Users/mirkoebert/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar lib/
  5. Ergänze in der build.xml einen Ausdruck der alle JARs im Verzeichnis lib in den Classpath einbindet (siehe Bild oben). 
  6. Deaktivieren des Dependency Managements mit Maven in Eclipse.
  7. Entfernen der Maven Dependencies aus dem Build Path des Projekts und ergänzen der JARs aus dem Verzeichnis lib/.
  8. Löschen der pom.xml aus dem Projektverzeichnis.
  9. Entfernen der Maven-Reste aus den Eclipse-Projektdatei (.project, diese Datei kann man mit dem View Navigator anzeigen und öffnen).
    1. Entfernen Maven-Builders entweder via Menü in den Projekteinstellungen oder man löscht den zweiten buildCommand-Block (siehe Bild unten)
    2. Entfernen der Maven-Natur durch löschen der zweiten nature-Zeile (Bild unten)

Donnerstag, 12. August 2010

Casava 1.7

Dem Komplilieren von Casava 1.7 stehen einigen Hürden entgegen. Meine Ausgangsbasis ist ein frischer Server mit der noch aktuellen Centos 5.5 Linux Distribution. Eine der Neuerungen von Casava ist die Unterstützung von gcc 4.4 und den entsprechenden Header-Dateien. Bei Casva 1.6 und einem gcc 4.4 musst man noch eine kleine Verränkung machen und eine alte string.h einfügen. Dies ist jetzt nicht mehr notwendig. Eine Beschreibung ist auch im Casava 1.7 Handbuch ab Seite 125 zu finden. Hier habe ich alle Schritte zusammengefasst um zu einer lauffähigen Casava 1.7 Installation zu kommen. Ausgangspunkt ist die Datei CASAVA_v1.7.0.tar.bz2.
  • Entpacken der Datei mit dem Casava Quellcode:
    • bunzip2 CASAVA_v1.7.0.tar.bz2
    • tar xf CASAVA_v1.7.0.tar
    • cd CASAVA_v1.7.0
  • Installation der fehlende Softwarepakete die für das Kompilieren und Ausführen notwendig sind:
    • yum groupinstall 'Development Tools'
    • yum install bzip2-devel.x86_64
    • yum install zlib-devel.x86_64
    • yum install libxml2-devel.x86_64
    • yum install perl-XML-Dumper
    • yum install perl-XML-Parser
    • yum install perl-XML-LibXML
    • yum install perl-XML-Simple
    • yum install perl-XML-Twig
    • yum install perl-XML-Grove
    • yum install ImageMagick
    • yum install PyXML
    • yum install gnuplot
    • yum install libtiff
  • Kompilieren von Casava
    • cd src
    • ./configure
    • make
    • make install
  • Testen
    • run.pl --help 
      • liefert keinen Fehler
    • export CASAVA_EXAMPLES=/usr/local/share/CASAVA-1.7.0/examples
    • run.pl --runId=TestEColiPE --projectDir=./DNA_EColi_PE -e ${CASAVA_EXAMPLES}/GERALD -l 4 --refSequences=${CASAVA_EXAMPLES}/genomes/E_coli --snpCovCutoff=-1 --indelsCovCutoff=-1
    • /usr/local/bin/taskServer.pl --tasksFile=/root/test/DNA_EColi_PE/tasks.17_42_27_04_10_10.txt --host=localhost --jobsLimit=1
      • Danach sollte es ein Verzeichnis DNA_EColi_PE geben in dessen Unterverzeichnis html liegen dann die Ergebnisse derAnalyse in HTML-Form.
Anmerkung: Nicht alle der oben angegebenen Softwarekomponenten sind fürs kompilieren von Casva notwendig. Hier wurden nur die Softwarebausteine aufgelistet die ich installieren musste. Abhängige Softwarebausteine wurden nicht aufgeführt, aus diesem Grunde ist diese Liste hier kürzer als die Liste im Casava-Handbuch (S.139f).

Montag, 9. August 2010

Das WebDAV Grauen

Unter dem Titel "Das Grauen der Praxis" (15/2010) wurde ein Artikel in der ct veröffentlicht. Die Erkenntnis des Artikels, erwartet nicht so viel von WebDAV. Der Nutzen von WebDAV wird in der Praxis vor allem von den Clients limitiert. Die WebDAV Client bieten in der Regel nur einfache Dateizugriffe und kein Locking oder Versionierung. Diese Erfahrungen kann ich leider voll bestätigen. Interessantes Detail, Windows kann WebDAV Server einbinden und daneben haben aber die Office-Produkte einen eigenen WebDAV Client. Keiner der beiden Clients scheint aber weiterführende Funktionen zu besitzen. Aber auch die Server-Seite hat ihre Grenzen, so scheitert der Filetransfer grosser Dateien (>2GB) bei Jackrabbit. Dadurch kann Jackrabbit nicht als tauglicher Ersatz für Produktionsumgebungen eingesetzt werden. Schade. Zur Zeit würde ich WebDAV nicht für Produktionsumgebungen als Ersatz für andere Systeme einsetzen. Aber aus Sicht des Programmierers ist WebDAV sehr interessant.