Se o port precisar de um Java™ Development Kit (JDK) para compilar, executar ou até mesmo extrair o distfile, então defina USE_JAVA
.
Existem vários JDKs na coleção de ports, de vários fornecedores e em várias versões. Se o port precisar usar uma versão específica, especifique-a usando a variável JAVA_VERSION
. A versão mais atual é java/openjdk8, java/openjdk6 e java/openjdk7 também estão disponíveis.
Variável | Significa |
---|---|
USE_JAVA | Defina para as variáveis restantes para ter algum efeito. |
JAVA_VERSION | Lista das versões Java adequadas separadas por espaço para o port. Um opcional "+" permite especificar um intervalo de versões (valores permitidos: 1.5[+] 1.6[+] 1.7[+] ). |
JAVA_OS | Lista de sistemas operacionais adequados do port JDK separados por espaço para o port (valores permitidos: native linux ) |
JAVA_VENDOR | Lista de fornecedores adequados de ports JDK separados por espaços para o port (valores permitidos: freebsd bsdjava sun openjdk ) |
JAVA_BUILD | Quando definido, adiciona o port JDK selecionado às dependências de compilação. |
JAVA_RUN | Quando definido, adicione o port JDK selecionado às dependências de execução. |
JAVA_EXTRACT | Quando definido, adicione o port JDK selecionado às dependências de extração. |
Abaixo está a lista de todas as configurações que um port receberá após a configuração de USE_JAVA
:
Variável | Valor |
---|---|
JAVA_PORT | O nome do port do JDK (por exemplo,java/openjdk6 ) |
JAVA_PORT_VERSION | A versão completa do port do JDK (por exemplo,1.6.0 ). Somente os dois primeiros dígitos deste número de versão são necessários, use ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/} |
JAVA_PORT_OS | O sistema operacional usado pelo port do JDK (por exemplo, 'native' ) |
JAVA_PORT_VENDOR | O fornecedor do port JDK (por exemplo,'openjdk' ) |
JAVA_PORT_OS_DESCRIPTION | Descrição do sistema operacional usado pelo port JDK (por exemplo, 'Native' ) |
JAVA_PORT_VENDOR_DESCRIPTION | Descrição do fornecedor do port JDK (por exemplo,'OpenJDK BSD Porting Team' ) |
JAVA_HOME | Caminho para o diretório de instalação do JDK (por exemplo, '/usr/local/openjdk6' ) |
JAVAC | Caminho para o compilador Java (por exemplo, '/usr/local/openjdk6/bin/javac' ). |
JAR | Caminho para ferramenta jar a ser usada (por exemplo, '/usr/local/openjdk6/bin/jar' ou '/usr/local/bin/fastjar' ). |
APPLETVIEWER | Caminho para o utilitário appletviewer (por exemplo,'/usr/local/openjdk6/bin/appletviewer' ). |
JAVA | Caminho para o executável Java . Use isto para executar programas Java (por exemplo, '/usr/local/openjdk6/bin/java' ). |
JAVADOC | Caminho para o utilitário javadoc . |
JAVAH | Caminho para o programa javah . |
JAVAP | Caminho para o programa javap . |
JAVA_KEYTOOL | Caminho para o utilitário keytool . |
JAVA_N2A | Caminho para a ferramenta native2ascii . |
JAVA_POLICYTOOL | Caminho para o programa policytool . |
JAVA_SERIALVER | Caminho para o utilitário serialver . |
RMIC | Caminho para o gerador de stub/skeleton RMI, rmic . |
RMIREGISTRY | Caminho para o programa de registro RMI, rmiregistry . |
RMID | Caminho para o daemon do RMI rmid . |
JAVA_CLASSES | Caminho para o arquivo que contém os arquivos de classe do JDK, ${JAVA_HOME}/jre/lib/rt.jar . |
Use o java-debug
make target para obter informações para depurar o port. Ele exibirá o valor de muitas das variáveis listadas anteriormente.
Além disso, essas constantes são definidas para que todos os ports Java possam ser instalados de maneira consistente:
Constante | Valor |
---|---|
JAVASHAREDIR | O diretório base para tudo relacionado ao Java. Padrão: ${PREFIX}/share/java . |
JAVAJARDIR | O diretório onde os arquivos JAR são instalados. Padrão: ${JAVASHAREDIR}/classes . |
JAVALIBDIR | O diretório onde os arquivos JAR instalados por outros ports estão localizados. Padrão: ${LOCALBASE}/share/java/classes . |
As entradas relacionadas são definidas em ambos PLIST_SUB
(documentado em Seção 8.1, “Alterando o pkg-plist
Baseado em Variáveis Make”) e SUB_LIST
.
Quando o port deve ser compilado usando o Apache Ant, ele deve definir USE_ANT
. Ant é, portanto, considerado o comando sub-make. Quando nenhum target do-build
é definido pelo port, será definido um padrão que execute Ant de acordo com MAKE_ENV
, MAKE_ARGS
e ALL_TARGET
. Isso é semelhante ao mecanismo USES=gmake
, documentado em Seção 6.5, “Mecanismos de Compilação”.
Ao portar uma biblioteca Java, o port precisa instalar o(s) arquivo(s) JAR em ${JAVAJARDIR}
e o resto em ${JAVASHAREDIR}/${PORTNAME}
(exceto para a documentação, veja abaixo). Para reduzir o tamanho do arquivo de empacotamento, faça referência aos arquivos JAR diretamente no Makefile
. Use esta declaração (onde
é o nome do arquivo JAR instalado como parte do port): myport
.jar
PLIST_FILES+= ${JAVAJARDIR}/myport
.jar
Ao portar um aplicativo Java, o port geralmente instala tudo em um único diretório (incluindo suas dependências JAR). O uso de ${JAVASHAREDIR}/${PORTNAME}
é fortemente indicado neste caso. Cabe ao mantenedor do port decidir se o port instala as dependências JAR adicionais sob esse diretório ou utiliza as já instaladas (de ${JAVAJARDIR}
).
Ao portar um aplicativo Java™ que requer um servidor de aplicação, como o www/tomcat7 para executar o serviço, é bastante comum que o fornecedor distribua um .war
. Um .war
é uma aplicação Web ARchive a qual é extraído quando chamado pelo aplicativo. Evite adicionar um .war
no pkg-plist
. Isto não é considerado a melhor prática. Um servidor de aplicação irá expandir o arquivo war mas não irá remove-lo se o port for desinstalado. Uma forma mais desejável de trabalhar com este arquivo é extrair o seu conteudo, depois instalar os arquivos e, por fim, adicionar esses arquivos ao pkg-plist
.
TOMCATDIR= ${LOCALBASE}/apache-tomcat-7.0 WEBAPPDIR= myapplication post-extract: @${MKDIR} ${WRKDIR}/${PORTDIRNAME} @${TAR} xf ${WRKDIR}/myapplication.war -C ${WRKDIR}/${PORTDIRNAME} do-install: cd ${WRKDIR} && \ ${INSTALL} -d -o ${WWWOWN} -g ${WWWGRP} ${TOMCATDIR}/webapps/${PORTDIRNAME} cd ${WRKDIR}/${PORTDIRNAME} && ${COPYTREE_SHARE} \* ${WEBAPPDIR}/${PORTDIRNAME}
Independentemente do tipo de port (biblioteca ou aplicativo), a documentação adicional é instalada na mesma localização como para qualquer outro port. A ferramenta Javadoc é conhecida por produzir um conjunto diferente de arquivos, dependendo da versão do JDK utilizado. Para ports que não impõem o uso de um determinado JDK, é uma tarefa complexa especificar a lista de empacotamento (pkg-plist
). Esta é uma razão pela qual os mantenedores de ports são fortemente encorajados a usar PORTDOCS
. Além disso, mesmo se o conjunto de arquivos que serão gerados pelo javadoc
puder ser previsto, o tamanho do pkg-plist
resultante irá encorajar o uso do PORTDOCS
.
O valor padrão para DATADIR
é ${PREFIX}/share/${PORTNAME}
. É uma boa ideia sobreescrever DATADIR
para ${JAVASHAREDIR}/${PORTNAME}
para ports Java. De fato, DATADIR
é automaticamente adicionado a PLIST_SUB
(documentado emSeção 8.1, “Alterando o pkg-plist
Baseado em Variáveis Make”) então use %%DATADIR%%
diretamente em pkg-plist
.
Quanto à escolha de compilar ports Java a partir do código fonte ou instalar diretamente a partir de uma distribuição binária, não há política definida no momento da escrita deste livro. No entanto, os membros do Projeto Java do FreeBSD encorajam os mantenedores de ports a terem seus ports compilados a partir do código fonte sempre que for possível.
Todos os recursos que foram apresentados nesta seção são implementados em bsd.java.mk
. Se o port precisar de suporte Java mais sofisticado, por favor, primeiro dê uma olhada no log do bsd.java.mk no Subversion pois normalmente leva algum tempo para documentar os recursos mais recentes. Então, se o suporte necessário que estiver faltando for benéfico para muitos outros ports Java, sinta-se à vontade para discuti-lo na Lista de discussão do FreeBSD sobre Linguagem Java.
Embora haja uma categoria Java
para PRs, isso refere-se ao esforço de portabilidade do JDK do projeto Java do FreeBSD. Portanto, envie o port Java na categoria ports
como para qualquer outro port, a menos que o problema esteja relacionado a uma implementação do JDK ou ao bsd.java.mk
.
Da mesma forma, existe uma política definida sobre as CATEGORIAS
de um port Java, que é detalhada em Seção 5.3, “Categorização”.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.