Wenn Ihr Port ein Java™ Development Kit (JDK™) benötigt, entweder zum Bauen, zur Laufzeit oder sogar, um das Distfile auszupacken, dann sollten Sie USE_JAVA setzen.
Es gibt mehrere JDKs in der Ports-Sammlung– von verschiedenen Anbietern und in verschiedenen Versionen. Wenn Ihr Port eine bestimmte dieser Versionen benötigt, können Sie definieren welche. Die aktuelle Version ist java/jdk16.
Tabelle 6-14. Variablen, die von Ports, die Java benutzen, gesetzt werden müssen
Variable | Bedeutung |
---|---|
USE_JAVA | Sollte definiert sein, damit die übrigen Variablen irgendeinen Effekt haben. |
JAVA_VERSION | Durch Leerzeichen getrennte Liste von geeigneten Java-Versionen für den Port. Ein optionales "+" ermöglicht die Angabe eines Bereiches von Versionen (mögliche Werte: 1.5[+] 1.6[+] 1.7[+]). |
JAVA_OS | Durch Leerzeichen getrennte Liste von geeigneten JDK-Port-Betriebssystemen für den Port. (erlaubte Werte: native linux). |
JAVA_VENDOR | Durch Leerzeichen getrennte Liste von geeigneten JDK-Port-Anbietern für den Port. (erlaubte Werte: freebsd bsdjava sun openjdk). |
JAVA_BUILD | Bedeutet, falls gesetzt, dass der ausgewählte JDK-Port zu den Build-Abhängigkeiten des Ports hinzugefügt werden soll. |
JAVA_RUN | Bedeutet, falls gesetzt, dass der ausgewählte JDK-Port zu den Laufzeit-Abhängigkeiten des Ports hinzugefügt werden soll. |
JAVA_EXTRACT | Bedeutet, falls gesetzt, dass der ausgewählte JDK-Port zu den Extract-Abhängigkeiten des Ports hinzugefügt werden soll. |
Das Folgende ist eine Liste aller Variablen, die ein Port bekommt, nachdem er USE_JAVA gesetzt hat:
Tabelle 6-15. Bereitgestellte Variablen für Ports, die Java benutzen
Variable | Wert |
---|---|
JAVA_PORT | Der Name des JDK-Ports (z.B. 'java/diablo-jdk16'). |
JAVA_PORT_VERSION | Die volle Version des JDK Ports (z.B. '1.6.0'). Wenn Sie nur die ersten beiden Stellen dieser Versionsnummer benötigen, benutzen Sie ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/}. |
JAVA_PORT_OS | Das vom JDK-Port benutzte Betriebssystem (z.B. 'native'). |
JAVA_PORT_VENDOR | Der Anbieter des JDK-Ports (z.B. 'freebsd'). |
JAVA_PORT_OS_DESCRIPTION | Beschreibung des vom JDK-Port benutzten Betriebssystems (z.B. 'Native'). |
JAVA_PORT_VENDOR_DESCRIPTION | Beschreibung des Anbieters des JDK-Ports (z.B. 'FreeBSD Foundation'). |
JAVA_HOME | Pfad zum Installationsverzeichnis des JDK (z.B. '/usr/local/diablo-jdk1.6.0'). |
JAVAC | Pfad zum Java-Compiler, der benutzt werden soll (z.B. '/usr/local/diablo-jdk1.6.0/bin/javac'. |
JAR | Pfad zum jar-Werkzeug, das benutzt werden soll (z.B.''/usr/local/diablo-jdk1.6.0/bin/jar oder '/usr/local/bin/fastjar'). |
APPLETVIEWER | Pfad zum appletviewer-Werkzeug (z.B. '/usr/local/diablo-jdk1.6.0/bin/appletviewer'). |
JAVA | Pfad zur java Binärdatei. Benutzen Sie dies, um Java-Programme auszuführen (z.B.'/usr/local/diablo-jdk1.6.0/bin/java'). |
JAVADOC | Pfad zum javadoc-Werkzeug. |
JAVAH | Pfad zum javah-Programm. |
JAVAP | Pfad zum javap-Programm. |
JAVA_KEYTOOL | Pfad zum keytool-Werkzeug. |
JAVA_N2A | Pfad zum native2ascii-Werkzeug. |
JAVA_POLICYTOOL | Pfad zum policytool Programm. |
JAVA_SERIALVER | Pfad zum serialver-Werkzeug. |
RMIC | Pfad zum RMI Stub/Skeleton-Generator, rmic. |
RMIREGISTRY | Pfad zum RMI Registry-Werkzeug, rmiregistry. |
RMID | Pfad zum RMI Daemon rmid. |
JAVA_CLASSES | Pfad zum Archiv, das die JDK-Klassendateien enthält, ${JAVA_HOME}/jre/lib/rt.jar. |
Sie können das java-debug make-Target benutzen, um Information zum Debuggen Ihres Ports zu erhalten. Es wird die Werte vieler der obenangegebenen Variablen anzeigen.
Zusätzlich sind die folgenden Konstanten definiert, damit alle Java-Ports auf eine konsistente Art installiert werden können:
Tabelle 6-16. Konstanten, die für Ports, welche Java benutzen, definiert sind
Konstante | Wert |
---|---|
JAVASHAREDIR | Das Basis-Verzeichnis für alles, was mit Java zusammenhängt. Standardmäßig ${PREFIX}/share/java. |
JAVAJARDIR | Das Verzeichnis, wohin JAR-Dateien installiert werden sollen. Standardmäßig ${JAVASHAREDIR}/classes. |
JAVALIBDIR | Das Verzeichnis, in dem JAR-Dateien, die von anderen Ports installiert wurden, liegen. Standardmäßig ${LOCALBASE}/share/java/classes. |
Die entsprechenden Einträge sind sowohl in PLIST_SUB (dokumentiert in Abschnitt 7.1) als auch in SUB_LIST definiert.
Wenn der Port mit Apache Ant kompiliert werden soll, muss er USE_ANT setzen. Ant wird dann als das sub-make-Kommando betrachtet. Wenn kein do-build-Target vom Port definiert ist, wird eine Standardvorgabe benutzt, die einfach Ant entsprechend MAKE_ENV, MAKE_ARGS und ALL_TARGET aufruft. Das ähnelt dem USE_GMAKE-Mechanismus, der in Abschnitt 6.3 dokumentiert ist.
Wenn Sie eine Java-Bibliothek portieren, sollte Ihr Port die JAR-Datei(en) in ${JAVAJARDIR} installieren, und alles andere unter ${JAVASHAREDIR}/${PORTNAME} (ausgenommen die Dokumentation - siehe unten). Um die Größe der Packlistendatei zu reduzieren, können die JAR-Datei(en) direkt im Makefile angegeben werden. Benutzen Sie einfach die folgende Anweisung (wobei myport.jar der Name der JAR-Datei ist, die als Teil des Ports installiert wird):
PLIST_FILES+= %%JAVAJARDIR%%/myport.jar
Beim Portieren einer Java-Applikation installiert der Port normalerweise alles unter einem einzigen Verzeichnis (inklusive seiner JAR-Abhängigkeiten). Die Benutzung von ${JAVASHAREDIR}/${PORTNAME} wird in dieser Beziehung dringend empfohlen. Es liegt im Entscheidungsbereich des Portierenden, ob der Port die zusätzlichen JAR-Abhängigkeiten unter diesem Verzeichnis installieren oder direkt die schon installierten (aus ${JAVAJARDIR}) benutzen soll.
Unabhängig von der Art Ihres Ports (Bibliothek oder Applikation), sollte die zusätzliche Dokumentation an die gleiche Stelle installiert werden wie bei jedem anderen Port auch. Das JavaDoc-Werkzeug ist dafür bekannt einen unterschiedlichen Satz von Dateien abhängig von der Version des benutzten JDKs zu erstellen. Für Ports, die nicht die Benutzung eines bestimmten JDKs vorgeben, ist es deshalb eine komplexe Aufgabe die Packliste (pkg-plist) festzulegen. Dies ist ein Grund, warum dringend angeraten wird, das PORTDOCS-Makro zu benutzen. Außerdem, selbst wenn Sie den Satz von Dateien, den javadoc erzeugen wird, voraussagen können, die Größe der resultierenden pkg-plist befürwortet die Benutzung von PORTDOCS.
Der Vorgabewert für DATADIR ist ${PREFIX}/share/${PORTNAME}. Es ist eine gute Idee, DATADIR für Java-Ports stattdessen auf ${JAVASHAREDIR}/${PORTNAME} zu setzen. In der Tat wird DATADIR automatisch zu PLIST_SUB (dokumentiert in Abschnitt 7.1) hinzugefügt, d.h. Sie können %%DATADIR%% direkt in pkg-plist benutzen.
Zu der Frage, ob Java-Ports aus dem Quelltext gebaut werden, oder direkt bereitgestellte binäre Distributionen benutzt werden sollten, gab es, als dies geschrieben wurde, keine definierte Richtlinie. Allerdings ermutigen Mitglieder des FreeBSD Java-Projekts Porter dazu, Ihre Ports aus dem Quelltext kompilieren zu lassen, wann immer dies kein Problem darstellt.
Alle Eigenschaften, die in diesem Abschnitt präsentiert wurden sind in bsd.java.mk implementiert. Sollten Sie jemals der Meinung sein, dass Ihr Port ausgefeiltere Java-Unterstützung benötigt, schauen Sie bitte erst in das bsd.java.mk CVS Log, weil es normalerweise immer etwas Zeit braucht bis die neuesten Eigenschaften dokumentiert sind. Wenn Sie glauben, dass der fehlende Support auch für viele andere Java Ports nützlich sein könnte, wenden Sie sich bitte an die FreeBSD Java Language.
Obwohl es eine java-Kategorie für Fehlerberichte gibt, bezieht sich diese auf die JDK-Portierungsbemühungen des FreeBSD Java-Projektes. Deshalb sollten Sie Ihren Java-Port in der ports-Kategorie einreichen wie bei jeden anderen Port auch - es sei denn, die Angelegenheit, die Sie zu klären versuchen, steht in Zusammenhang entweder mit einer JDK-Implementierung oder bsd.java.mk.
Gleichermaßen gibt es eine definierte Richtlinie für die CATEGORIES eines Java-Ports, die in Abschnitt 5.3 erklärt wird.
Zurück | Zum Anfang | Weiter |
Benutzung von KDE | Nach oben | Webanwendungen, Apache und PHP |