Ol� Rafael,
Como o arquivo JPX � um XML, pode-se usar uma folha de estilos XSLT para
transformar qualquer JPX em build.xml. Para isto, seria preciso entender a estrutura do arquivo (ter um DTD ou XSchema ajudaria). De qualquer forma, o JPX � muito simples. Ele apenas guarda as informa��es que o JBuilder precisa para gerenciar o projeto. Quem decide o que fazer com as propriedades guardadas � o JBuilder. J� no build.xml do Ant voc� define os alvos e tarefas que o Ant ir� executar.
Como o arquivo JPX � um XML, pode-se usar uma folha de estilos XSLT para
transformar qualquer JPX em build.xml. Para isto, seria preciso entender a estrutura do arquivo (ter um DTD ou XSchema ajudaria). De qualquer forma, o JPX � muito simples. Ele apenas guarda as informa��es que o JBuilder precisa para gerenciar o projeto. Quem decide o que fazer com as propriedades guardadas � o JBuilder. J� no build.xml do Ant voc� define os alvos e tarefas que o Ant ir� executar.
Eu fiz uma folha XSLT simples que l� algumas
propriedades do JPX e as copia para um build.xml do Ant bem simples. Ele n�o
aproveita todas as propriedades do JPX. Algumas s�o in�teis para o Ant. Mas,
apesar de simples, ele pode compilar, criar um JAR execut�vel, rodar o JAR e
gerar javadoc. Voc� deve poder usar essa folha em qualquer projeto simples de
aplica��o console Java. Para aplica��es Web e EJB talvez d� para compilar, mas
ser� necess�rio criar targets adicionais para gerar os JARs, fazer os deploy,
etc.
Suponha o seguinte JPX:
<
project><property category="runtime.0" name="RunnableType"
value="com.borland.jbuilder.runtime.ApplicationRunner"/>
<property category="runtime.0" name="application.class"
value="com.macaiba.xpathed.gui.Main"/>
<property category="sys" name="BackupPath" value="bak"/>
<property category="sys" name="DocPath" value="doc"/>
<property category="sys" name="OutPath" value="classes"/>
<property category="sys" name="SourcePath" value="src"/>
<property category="sys" name="Version" value="1.0"/>
<property category="sys" name="WorkingDirectory" value="."/>
<!-- ... -->
<file path="src/com/macaiba/xpathed/gui/Main.java"/>
<!-- ... -->
<file path="xpathed.html"/>
</project>
Eu vou aproveitar apenas as vari�veis que localizam
os diret�rios, a vers�o e o nome da classe execut�vel (tudo o que est� em
destaque - para quem consegue ver e-mail HTML).
A folha de estilos abaixo (parcial - a folha
completa est� anexa) l� as propriedades do JPX e as coloca em elementos
<property> do Ant. O respo do arquivo usa as propriedades para preencher
os targets e tarefas.
<xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1" indent="yes" />
<xsl:param name="appName">MeuPrograma</xsl:param>
<xsl:template match="project">
<project name="JBuilder Project"
basedir="{property[@name='WorkingDirectory']/@value}"
default="compile">
<property name="build.dir"
value="{property[@name='OutPath']/@value}" />
<property name="src.dir"
value="{property[@name='SourcePath']/@value}" />
<property name="docs.dir"
value="{property[@name='DocPath']/@value}" />
<property name="version"
value="{property[@name='Version']/@value}" />
<property name="app.name"
value="{$appName}" />
<property name="jar.file"
value="${{app.name}}-${{version}}.jar" />
<property name="main.class"
value="{property[@name='application.class']/@value}" />
<target name="compile" description="Compila o codigo-fonte">
<javac srcdir="${{src.dir}}" destdir="${{build.dir}}">
<classpath path="${{build.dir}}" />
</javac>
</target>
<target name="build" description="Cria um JAR executavel">
<jar destfile="${{jar.file}}">
<manifest>
<attribute name="Main-class" value="${{main.class}}"/>
</manifest>
<fileset dir="${{build.dir}}" />
</jar>
</target>
<xsl:output encoding="iso-8859-1" indent="yes" />
<xsl:param name="appName">MeuPrograma</xsl:param>
<xsl:template match="project">
<project name="JBuilder Project"
basedir="{property[@name='WorkingDirectory']/@value}"
default="compile">
<property name="build.dir"
value="{property[@name='OutPath']/@value}" />
<property name="src.dir"
value="{property[@name='SourcePath']/@value}" />
<property name="docs.dir"
value="{property[@name='DocPath']/@value}" />
<property name="version"
value="{property[@name='Version']/@value}" />
<property name="app.name"
value="{$appName}" />
<property name="jar.file"
value="${{app.name}}-${{version}}.jar" />
<property name="main.class"
value="{property[@name='application.class']/@value}" />
<target name="compile" description="Compila o codigo-fonte">
<javac srcdir="${{src.dir}}" destdir="${{build.dir}}">
<classpath path="${{build.dir}}" />
</javac>
</target>
<target name="build" description="Cria um JAR executavel">
<jar destfile="${{jar.file}}">
<manifest>
<attribute name="Main-class" value="${{main.class}}"/>
</manifest>
<fileset dir="${{build.dir}}" />
</jar>
</target>
<!-- Continua ..... -->
Observe que tive que usar {{ nas propriedades do
Ant para produzir {. Isto � porque o { � usado pelo processador XSLT para
identificar express�es XPath a serem processadas dentro de atributos do
arquivo-resultado. Em {$appName}, por exemplo, eu estou lendo um par�metro que
cont�m o nome da aplica��o (pode ser passado externamente para o processador
XSLT).
Para transformar, use qualquer transformador XSLT
(o Xalan, por exemplo). Voc� pode usar o Xalan em linha de comando ou us�-lo
atrav�s do JAXP. O resultado da transforma��o �:
<?xml version="1.0"
encoding="iso-8859-1"?>
<property value="classes" name="build.dir"/>
<property value="src" name="src.dir"/>
<property value="doc" name="docs.dir"/>
<property value="1.0" name="version"/>
<property value="MeuPrograma" name="app.name"/>
<property value="${app.name}-${version}.jar" name="jar.file"/>
<property value="com.macaiba.xpathed.gui.Main" name="main.class"/>
<target description="Compila o codigo-fonte" name="compile">
<javac destdir="${build.dir}" srcdir="${src.dir}">
<classpath path="${build.dir}"/>
</javac>
</target>
<target description="Cria um JAR executavel" name="build">
<jar destfile="${jar.file}">
<manifest>
<attribute value="${main.class}" name="Main-class"/>
</manifest>
<fileset dir="${build.dir}"/>
</jar>
</target>
<!-- Continua -->
A �nica desvantagem � que o c�digo n�o aparece
endentado (a n�o ser que voc� o carregue em um editor que faz a endenta��o como
o XML Spy). Se voc� fizer a transforma��o com o Xalan, poder� usar extens�es
para endentar o texto ou se fizer usando o JAXP pode fazer isto no
serializer.
Para gerar buildfiles, d� uma olhada no projeto
Antidote. O JEdit 4.1 possui novos plug-ins (AntViz) que permitem
representar buildfiles graficamente (mostrando as depend�ncias).
[]s
Helder.
--
Helder da Rocha ([EMAIL PROTECTED])
Web Consultant
www.argonavis.com.br
S�o Paulo, Brazil
+55 (11) 9291 0567
----- Original Message -----
From: "Rafael U. C. Afonso" <[EMAIL PROTECTED]>
To: "Lista SouJava" <[EMAIL PROTECTED]>
Sent: Monday, August 26, 2002 11:49 AM
Subject: [java-list] D�vidas Sobre o ANT
> Ol�:
>
> Tenho duas d�vidas sobre o Ant:
> 1) Algu�m sabe como gerar um arquivo buildfile do Ant (build.xml) a
> partir de uma arquivo de Projeto do JBuilder (*.jpx)?
> 2) Algu�m conhece uma ferramenta GUI para a gera��o de Buildfiles?
>
> Grato,
>
> ===================================
> Rafael Ubiratam Clemente Afonso
> Java 2 Certified Programmer
> E-mail: [EMAIL PROTECTED]
> ===================================
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
> d�vidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> historico: http://www.mail-archive.com/java-list%40soujava.org.br
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>
>
