Compilação de múltiplos módulos WAR com o ANT

Bom dia pessoal, tudo bem?

Estou migrando uma aplicação EJB 2.1, com vários módulos WEB (empacotados em diferentes arquivos .war), bem antiga, para o JBoss 5 (parte de um processo de atualização da aplicação que estamos iniciando), em substituição ao servidor de aplicação anterior, o BES, da Borland.

Já consegui configurar o ambiente todo, inicia sem problemas, os EJBs estão funcionando, acesso ao banco, tudo certinho. Só que, como a aplicação é bem antiga, alguns JSPs estão dando problema de compilação. Coisas como utilizar aspas duplas no lugar de aspas simples.

O problema é que esses erros só estão sendo percebidos quando a aplicação está em pé, e você acessa (pelo browser) exatamente aquela página. Ou seja, da forma como está, teríamos que acessar todos os JSPs, um a um, para ver o problema. São mais de 500, o que torna este processo bem inviável.

Eu dei uma pesquisada, e não vi uma opção no JBoss de efetuar uma pré-compilação de JSPs. Então, pensei em montar um script em ANT para fazer essa validação para mim. O script é baseado nesse link:

http://community.jboss.org/wiki/PrecompileJSPs

Mas, o que preciso validar são vários JSPs de diferentes módulos web, e não somente de um. Assim, tentei utilizar o ant-contrib para resolver a parada, incluindos alguns loops e, bem, de certa forma consegui… só que ele pára de executar assim que encontra algum erro.

Claro que isso é melhor do que subir o servidor e acessar JSP por JSP, mas, queria saber se alguém já passou por isso, e se tem uma forma melhor (menos braçal, por exemplo) de fazer compilação de JSPs (como é só para correção de erros, daria para usar outro servidor de aplicação, mas, o Tomcat fica difícil por causa dos módulos EJB).

Para referência, segue trechos do build.xml que montei (não tá nem um pouco bonito, mas, me falta experiência com ant, infelizmente):

<!-- declaracao de propriedades -->
...
        <!-- Target para extrair todos os arquivos war, localizados no diretório webapp.path -->
	<target name="extract">
		<fileset dir="${webapp.path}" includes="*.war" />
		<for param="filename">			
			<path>
				<fileset dir="${webapp.path}" includes="*.war" />
			</path>
			<sequential>
				<unwar src="@{filename}" dest="/@{filename}.dir"/>
			</sequential>
		</for>
	</target>
	
	<!-- Target para gerar classes a partir dos arquivos JSP -->
	<target name="jspc" depends="extract">
		<fileset dir="${webapp.path}" includes="*.war" />
		<for list="${web.modules}" param="foldername">	
			<path>
				<!-- não esta funcionando com a diretiva de diretorios - dirset -->
				<fileset dir="." includes="*.war.dir" />
			</path>
			<sequential>
				<taskdef classname="org.apache.jasper.JspC" name="jasper2">
					<classpath id="jspc.classpath">
						<pathelement location="${jboss.as.home}/server/${jboss.as.profile_name}/deploy/jbossweb.sar/jbossweb.jar" />
						<path refid="jbossweb.classpath"/>
					</classpath>
				</taskdef>

				<jasper2 validateXml="false" uriroot="./@{foldername}" webXmlFragment="${webapp.path}/@{foldername}/WEB-INF/generated_web.xml" 
						outputDir="${webapp.path}/@{foldername}/WEB-INF/src" />
			</sequential>
		</for>
	</target>
	
	<!-- 
		Target para compilar as classes JSP geradas 
		Observacao: nao mostra todos os erros de uma vez. Assim que um erro e encontrado, para a validacao
	-->
	<target name="compile" depends="jspc">
		<for list="${web.modules}" param="foldername">	
			<path>
				<fileset dir="." includes="*.war.dir" />
				<dirset dir="."/>
			</path>
			<sequential>
				<!-- Criacao dos diretorios para colocar as classes compiladas -->
				<mkdir dir="${webapp.path}/@{foldername}/WEB-INF/classes" />
				<mkdir dir="${webapp.path}/@{foldername}/WEB-INF/lib" />
				
				<javac destdir="${webapp.path}/@{foldername}/WEB-INF/classes" optimize="off" debug="on"
					failonerror="false" srcdir="${webapp.path}/@{foldername}/WEB-INF/src" excludes="**/*.smap">
					<classpath>
						<pathelement location="${webapp.path}/@{foldername}/WEB-INF/classes" />
						<fileset dir="${webapp.path}/@{foldername}/WEB-INF/lib">
							<include name="*.jar" />
						</fileset>
						<path refid="jbossweb.classpath"/>
					</classpath>
					<include name="**" />
					<exclude name="tags/**" />
				</javac>
			</sequential>
		</for>
	</target>

Obs: ele ainda tá com alguns testes meus sobrando, tentei remover, mas, algum pode ter passado despercebido.

Exemplo de output:

[code]extract:
[unwar] Expanding: D:\Ambiente\ValidacaoJSP\module1.war into D:\Ambiente\ValidacaoJSP\module1.war.dir

jspc:

BUILD FAILED
D:\Ambiente\ValidacaoJSP\build.xml:106: The following error occurred while executing this line:
D:\Ambiente\ValidacaoJSP\build.xml:120: org.apache.jasper.JasperException: file:D:/Ambiente/ValidacaoJSP/modulo1.dir/jsp/pesquisa.jsp(94,119) Attribute value “if (this.checked == true){variavel_hidden.value = ‘S’;}else{variavel_hidden.value = ‘N’;}” is quoted with " which must be escaped when used within the value[/code]

Obrigada.

Obs: nomes de variáveis e caminhos foram alterados, tenho um contrato rígido de segurança de fontes para seguir.

e ai fera vc consegui resolver este seu problema???
estou com um problema parecido.

eu preciso implementar varios war em uma mesma aplicação. mas eu não estou sabendo a melhor forma de fazer isso?

o mais indicado é usar unwar??

ou tem algum outro modo de fazer isso?

grato

Fera vc poderia me dize3r como vc fez pra compilar varios war??

eu estou procurando ja faz um tempo e não consigo encontrar nada que esclareça minhas duvidas…

valeu