Ant como iterar os arquivos de um diretorio?

4 respostas
vinicius_roc

Bom dia Pessoal,

Eu criei uma target do wsimport que funcionou muito bem, mas eu tenho q sempre digitar o caminho completo do arquivo incluindo seu nome. Gostaria que eu precisasse dizer apenas a pasta e ele pega todos os wsdl dentro dela, pois tenho uma pasta aqui com mais de 20 wsdl.

Estou tentando assim:

<target name="wsimport">
		 <wsimport
		 	  wsdl="${wsdlNovo}"
		      sourcedestdir="W:/projects/mlps/src"
		 	  verbose="true"
		 	  package="${nomedopacote"}
		  />
	</target>
	
	<target name="gerarClasses">
		<foreach param="wsdlNovo" target="wsimport">
			<fileset dir="${meuDiretorio}" includes="*.wsdl"/> 
		</foreach>
	</target>

Porem nao esta dando certo. recebo esse erro:

Buildfile: W:\projects\amadeus\build\build.xml
gerarClasses:

BUILD FAILED
W:\projects\amadeus\build\build.xml:70: Problem: failed to create task or type foreach
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.


Total time: 204 milliseconds

Oque esta errado? E qual a maneira de se fazer isso? Procurei no site do ant mais nao consegui =/

Muito obrigado pela ajuda

4 Respostas

zoren

Está faltando o jar no ant no classpath

se eu não me engano o nome dele é ant-contrib

vinicius_roc

Era isso mesmo, funcionou muito bem.

Só mais uma duvida, consigo pegar o nome do arquivo, para gerar um pacote diferente para cada wsdl? por exemplo:

br.com.vinicius.webservices.model.wsdlum
br.com.vinicius.webservices.model.wsddois

onde wsdlum e wsdldois é o nome do wsdl (wsdlum.wsdl e wsdldois.wsdl)

Consigo?

se ajudar ficou assim meu ant

<path id="ant-contrib.classpath">
		<fileset dir="${JAVA.dir}/ant-contrib">
			<include name="*.jar" />
		</fileset>
		<fileset dir="${JAVA.dir}/ant-contrib/lib">
			<include name="*.jar" />
		</fileset>
	</path>
	
	<taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="ant-contrib.classpath" />

<target name="wsimport">
		 <wsimport
		 	  wsdl="${wsdlNovo}"
		      sourcedestdir="W:/projects/mlps/src"
		 	  verbose="true"
		 	  package="br.com.mcn.model.service.webservices.easy.robot.teste"
		  />
	</target>
	
	<target name="gerarClasses">
		<foreach param="wsdlNovo" target="wsimport">
			<fileset dir="W:/workspaces/odonto/projetos/odonto/Análise e Design/Requisitos/Schemas/WSEasy/v8-0-0/" includes="**/*.wsdl"/> 
		</foreach>
	</target>

Muito Obrigado

vinicius_roc

Pergunto, pois existem arquivos como o package-info.java e ObjectFactory.java que é gerado um para cada wsdl, então seria interessante que ficasse em pacotes diferentes por segurança e garantia e depois caso haja arquivos em comum eu separasse em um pacote só.

zoren

De cabeça eu não lembro com faz

mas o certo é ter apenas um no mesmo pacote

mas eu acho q faço mais ou menos igual vc

Criado 11 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 4
Participantes 2