2007/09/27

Umwandlung eines Ant Path in ein Attribute

Ich stand schon öfters vor dem Problem, das ich eine per "path" deklarierte Dateimenge in eine Liste umwandeln mußte, z.B. um alle Libs in das Class-Path Element der Manifest-Datei zu schreiben. Aus Zeitmangel hatte ich mir bisher leider immer für die händische Variante entschieden, dabei ist die Lösung so einfach.

Definieren eines Path:

<!-- Classpath declaration -->
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
<include name="**/*.zip"/>
</fileset>
</path>

Dieser kann nun per Task "pathconvert" in die Property "lib.project.manifest.classpath" Umgewandelt werden:
    <!-- convert the libraries to be included in the  Class-Path
attribute of the MANIFEST.MF file -->
<pathconvert property="lib.project.manifest.classpath"
pathsep=" ">
<path refid="project.classpath"/>
<flattenmapper/>
</pathconvert>


Die Einbindung in das Manifest ist dann einfach:
    <target name="build-jar" depends="compile,copymetafiles">
<jar destfile="${build.dir}/intel.jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class"
value="org.me.startmeup"/>
<attribute name="Class-Path"
value="${lib.project.manifest.classpath}"/>
</manifest>
</jar>
</target>


Warum ich das nicht schon eher gefunden hab? Keine Ahnung, schließlich ist "pathconvert" direkt unter den Core Tasks unter ant.apache.org gelistet.

2007/09/20

Hibernate mit MySQL und UTF8

Bin dabei mich in JPA (mit Hibernate) einzuarbeiten. Als kleine Beispielanwendung parse ich dazu eine Webseite und speichere Teile davon in einer MySQL Datenbank. Soweit so gut, das Buch 'Java Persistence with Hibernate' hat mir sehr beim Verständnis geholfen.

Ein Problem, das sich Auftat betraf das Speichern von UTF8 Daten in der MySQL Datenbank mittels Hibernate.

Geholfen haben letztlich die folgenden Schritte:

1. Anlegen der DB mit UTF8 Zeichensatz:

mysql> create database mydb charset utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)


2. Erweitern der JDBC URL in der persistence.xml:
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost/aeintel13b?useUnicode=true&amp;characterEncoding=utf8" />


Testweise (hier auf diesem Laptop) hatte ich eigentlich mit Oracle 10g arbeiten wollen, aber leider ist es mir hier nicht gelungen, UTF8 in die DB zu bekommen. Dazu muss wohl die ganze DB mit UTF8 Support angelegt werden. Da allerdings schon einiges an Daten enthalten ist (in anderen Shemas) war das nicht wirklich eine Option.