Bom dia amigos.
Andei visitando a API do Ant em http://ant.apache.org/manual/index.html
para tentar encontrar o que preciso mas ainda não consegui.
Utiliso o Eclipse JEE e tenho vários projetos Ant’s tipo uns 20 ou mais configurados para dar Deploy em um projeto web
no entanto sempre quando vou testar uma nova tela, tenho que executar todos esses 20 Ants.
Sendo assim por favor alguém sabe me dizer se existe uma maneira de criar um Ant que execute automaticamente
esses outros Ants? Assim bastaria eu executar esse único Ant que ele se encarregaria de executar os demais.
Muito obrigado.
Sucesso a todos.
Abraço.
tem uma task do ant que se chama ant, que é justamente pra isso, chamar outros builds de dentro de um build… procura no manual na lista de tags que você encontra ela lá
Olá amigo rogeriopaguilar
Utilizei a Task como você tinha me dito e até consegui fazer rodar os arquivos Ant de teste.
Mas na hora que é para fazer rodar no projeto original está dando o seguinte erro que vou mostrar nas telas abaixo:
Aqui o código do meu Ant para chamar os outros Ants
<?xml version="1.0"?>
<project basedir=".">
<ant antfile="/home/java05/workspace2/ePublicProtocolo/build.xml" />
</project>
/>[/code]
Ele até consegue encontrar o projeto Protocolo
mas dá o seguinte erro abaixo:
[code]
Buildfile: /home/java05/workspace2/Z-AntsTiago/bin/teste_Ant/ant/build.xml
export-project-artifacts:
[delete] Deleting directory /home/java05/workspace2/Z-AntsTiago/bin/teste_Ant/ant/dist
[mkdir] Created dir: /home/java05/workspace2/Z-AntsTiago/bin/teste_Ant/ant/dist
BUILD FAILED
/home/java05/workspace2/Z-AntsTiago/bin/teste_Ant/ant/build.xml:11: The following error occurred while executing this line:
/home/java05/workspace2/ePublicProtocolo/build.xml:18: The following error occurred while executing this line:
/home/java05/workspace2/ePublicProtocolo/build.xml:90: Manifest file: /home/java05/workspace2/Z-AntsTiago/bin/teste_Ant/ePublicProtocoloBeans/bin/META-INF/MANIFEST.MF does not exist.
Total time: 122 milliseconds
[/code]
Ou seja, ele fala que não existe o arquivo ou caminho
[code]/home/java05/workspace2/ePublicProtocolo/build.xml:90: Manifest file: /home/java05/workspace2/Z-AntsTiago/bin/teste_Ant/ePublicProtocoloBeans/bin/META-INF/MANIFEST.MF does not exist. [/code]
e esse erro ocorre na seguinte linha do Ant do Projeto Protocolo
[code] <jar destfile="${dist.dir}/@{lib-project-name}.jar" compress="true" manifest="../@{lib-project-name}/bin/META-INF/MANIFEST.MF">
Essa linha está dentro de uma macrodef conforme abaixo:
<!-- = = = = = = = = = = = = = = = = =
macrodef: export-lib-artifact
= = = = = = = = = = = = = = = = = -->
<macrodef name="export-lib-artifact">
<attribute name="lib-project-name" />
<sequential>
<jar destfile="${dist.dir}/@{lib-project-name}.jar" compress="true" manifest="../@{lib-project-name}/bin/META-INF/MANIFEST.MF">
<fileset dir="../@{lib-project-name}/bin">
<include name="**/*.*" />
</fileset>
</jar>
</sequential>
</macrodef>
Me parece que na hora que está chegando o diretório ou algo assim nesse tal macrodef, ele está passando algo errado
como podemos ver no erro que fala que o MANIFEST.MF não existe.
Estou colocando o arquivo completo do Ant do Protocolo para ver se ajuda.
Detalhes
1: Já testei tentando usar a task Target mas o erro é o mesmo
2: Já chamei algumas targets separadas e até deu certo mas quando chega nesse tal macrodef dá erro sempre.
3: Eu até consigo usar essa task para chamar outos Ants sem problemas mas quando chega a hora desse tal Macrodef rodar
aí sempre dá erro.
Código completo do Protocolo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<project name="ePublicProtocolo" default="deploy-glassfish">
<property file="../build.properties" />
<property name="glassfish.server.deploy.path" value="/opt/javatools/glassfish3/glassfish/domains/domain1/autodeploy/" />
<property name="project.basename" value="ePublicProtocolo" />
<property name="dist.dir" location="./dist" />
<!-- =================================
target: export-project-artifacts
================================= -->
<target name="export-project-artifacts">
<delete dir="${dist.dir}" file="**/*.*" />
<mkdir dir="${dist.dir}" />
<export-lib-artifact lib-project-name="${project.basename}Beans" />
<export-ejb-artifact ejb-project-name="${project.basename}Business" />
<export-ejb-artifact ejb-project-name="${project.basename}Facade" />
<export-ejb-artifact ejb-project-name="${project.basename}DAO" />
<export-project-web web-project-name="${project.basename}Web" web-xml-file="../${project.basename}Web/WebContent/WEB-INF/web.xml" />
<export-project-ear ear-project-name="${project.basename}" />
<delete>
<fileset dir="${dist.dir}">
<include name="${project.basename}Web.war" />
<include name="${project.basename}DAO.jar" />
<include name="${project.basename}Facade.jar" />
<include name="${project.basename}Business.jar" />
<include name="${project.basename}Beans.jar" />
</fileset>
</delete>
</target>
<!-- =================================
target: deploy-glassfish
================================= -->
<target name="deploy-glassfish" depends="export-project-artifacts">
<copy todir="${glassfish.server.deploy.path}">
<fileset dir="${dist.dir}">
<include name="${project.basename}.ear" />
</fileset>
</copy>
</target>
<!-- =================================
target: export-project-artifacts-production
================================= -->
<target name="export-project-artifacts-production">
<delete dir="${dist.dir}" file="**/*.*" />
<mkdir dir="${dist.dir}" />
<export-lib-artifact lib-project-name="${project.basename}Beans" />
<export-ejb-artifact ejb-project-name="${project.basename}Facade" />
<export-ejb-artifact ejb-project-name="${project.basename}Business" />
<export-ejb-artifact ejb-project-name="${project.basename}DAO" />
<copy todir="${dist.dir}">
<fileset dir="../${project.basename}Web/WebContent/WEB-INF">
<include name="web.xml" />
</fileset>
</copy>
<replace casesensitive="true" file="${dist.dir}/web.xml" token="Development" value="Production" />
<export-project-web web-project-name="${project.basename}Web" web-xml-file="${dist.dir}/web.xml" />
<delete file="${dist.dir}/web.xml" />
<export-project-ear ear-project-name="${project.basename}" />
<delete>
<fileset dir="${dist.dir}">
<include name="${project.basename}Web.war" />
<include name="${project.basename}DAO.jar" />
<include name="${project.basename}Facade.jar" />
<include name="${project.basename}Business.jar" />
<include name="${project.basename}Beans.jar" />
</fileset>
</delete>
</target>
<!-- = = = = = = = = = = = = = = = = =
macrodef: export-lib-artifact
= = = = = = = = = = = = = = = = = -->
<macrodef name="export-lib-artifact">
<attribute name="lib-project-name" />
<sequential>
<jar destfile="${dist.dir}/@{lib-project-name}.jar" compress="true" manifest="../@{lib-project-name}/bin/META-INF/MANIFEST.MF">
<fileset dir="../@{lib-project-name}/bin">
<include name="**/*.*" />
</fileset>
</jar>
</sequential>
</macrodef>
<!-- = = = = = = = = = = = = = = = = =
macrodef: export-ejb-artifact
= = = = = = = = = = = = = = = = = -->
<macrodef name="export-ejb-artifact">
<attribute name="ejb-project-name" />
<sequential>
<jar destfile="${dist.dir}/@{ejb-project-name}.jar" compress="true" manifest="../@{ejb-project-name}/build/classes/META-INF/MANIFEST.MF">
<fileset dir="../@{ejb-project-name}/build/classes">
<exclude name="**/*Test.class" />
<exclude name="META-INF/*.*" />
</fileset>
<fileset dir="../@{ejb-project-name}/ejbModule">
<include name="META-INF/*.*"/>
</fileset>
</jar>
</sequential>
</macrodef>
<!-- = = = = = = = = = = = = = = = = =
macrodef: export-project-web
= = = = = = = = = = = = = = = = = -->
<macrodef name="export-project-web">
<attribute name="web-project-name" />
<attribute name="web-xml-file" />
<sequential>
<ant antfile="../ePublicFacesCommon/build.xml" inheritall="false" />
<war compress="true" destfile="${dist.dir}/@{web-project-name}.war" manifest="../@{web-project-name}/WebContent/META-INF/MANIFEST.MF" webxml="@{web-xml-file}">
<fileset dir="../@{web-project-name}/WebContent">
<exclude name="META-INF/*" />
<exclude name="WEB-INF/web.xml" />
<exclude name="WEB-INF/*.jsfdia" />
<exclude name="reports/*.jrxml" />
</fileset>
<classes dir="../@{web-project-name}/build/classes" />
<lib dir="../ePublicFacesCommon/dist" />
</war>
</sequential>
</macrodef>
<!-- = = = = = = = = = = = = = = = = =
macrodef: export-project-ear
= = = = = = = = = = = = = = = = = -->
<macrodef name="export-project-ear">
<attribute name="ear-project-name" />
<sequential>
<zip destfile="${dist.dir}/@{ear-project-name}.ear" compress="true">
<zipfileset file="../@{ear-project-name}/EarContent/META-INF/application.xml" prefix="META-INF" />
<zipfileset file="../@{ear-project-name}/EarContent/META-INF/MANIFEST.MF" prefix="META-INF" />
<zipfileset dir="${dist.dir}">
<include name="@{ear-project-name}DAO.jar" />
<include name="@{ear-project-name}Business.jar" />
<include name="@{ear-project-name}Facade.jar" />
<include name="@{ear-project-name}Web.war" />
</zipfileset>
<zipfileset file="${dist.dir}/@{ear-project-name}Beans.jar" prefix="lib" />
</zip>
</sequential>
</macrodef>
</project>
Por favor quem peço ajuda pois essa é uma tarefa que estou tentando criar para onde eu trabalho.
Desde já agradeço pela atenção.
Abraços.