Replace de uma String de um arquivo pelo conteúdo de outro arquivo

7 respostas
leandrobla

Olá…
Eu estou tentando fazer o replace de uma String em um arquivo .jsp, pelo conteúdo de outro arquivo, isso através do ANT.

Explicando melhor…
Eu tenho um arquivo chamado menu.jsp, e nele tenho essa String: @testeMenu@
O que quero fazer é: com o ANT, substituir essa String pelo conteúdo de outro arquivo .jsp, que é uma complementação para o menu.

Já tentei algo assim:

<target name="replace" description="Faz um replace">
	<replace file="teste/menu.jsp" propertyFile="${basedir}/build.properties">
	        <replacefilter token="@testeMenu@" property="teste"/>
	</replace>		
</target>

${basedir} = pasta raiz do projeto.

Bom, como podem ver…
Eu tô tentando substituir o token ‘@testeMenu@’, pelo conteúdo da property ‘teste’ do arquivo build.properties.
Se eu der um valor para o property teste no build.properties, ele seta direitinho o valor desta propriedade.
O problema é que não sei como setar um arquivo para essa property… Já tentei da seguinte forma:

<property name="${basedir}/build.properties.teste" value=""/>
<loadfile property="teste" srcfile="teste/menu-include.jsp"/>

Ou seja, estou tentando carregar um arquivo para a property do build.properties, mas parece que isso não é possível, ou deve ser feita de outra forma.

Alguém já tentou fazer coisa parecida? Ou por acaso sabe outra forma de fazer esse simples replace?
Agradeço qualquer resposta.

7 Respostas

B

Ola,

Não sei se esta tag consegue pegar o conteudo do arquivo não…

mas de qq jeito, pq vc não usa na página o <@% import… ou <jsp:import … não é melhor?

leandrobla

Assim infelizmente não serve…

O meu menu.jsp está em um projeto, enquanto o arquivo que preciso incluir nele está em outro projeto, que é como se fosse uma extensão. O detalhe aqui, é que o projeto que tem o menu completo, que é o primeiro, não pode ter nenhuma referência ao projeto de extensão, na verdade ele nem deve saber que existe.

Por outro lado, o projeto de extensão conhece muito bem meu projeto principal, inclusive, utiliza várias classes e outras coisas dele.
Por isso, a forma que eu posso fazer é deixar uma String no arquivo de menu do projeto principal, para que ela seja substituída ao compilar o projeto de extensão, que irá usar o menu do projeto principal, além de mais alguns itens para o menu.

Espero que eu tenha explicado direito.

Mas de qualquer forma, agradeço sua tentativa de ajuda :slight_smile:

B

Bom, deixa ver se entendi:

1-> vc tem um projeto base, assim por dizer, e neste projeto base vc tem o se menu original…
2-> vc tem um segundo projeto que usa este projeto base, e neste segundo projeto vc tb tem um menu, mas o menu deste precisa ir para o
menu do projeto base, é isto?

leandrobla

Quase isso…

Primeira afirmativa tá certa…

Mas a segunda é que na verdade, o menu do projeto base que precisa estar no segundo projeto, eu preciso de todos os itens de menu do projeto base, além de ter que acrescentar mais itens de menu do segundo projeto.

O projeto base funciona sozinho, por si só, com seu menu completo e enorme.
O segundo projeto é como se fosse o projeto base, acrescentado de mais módulos, seria o projeto base extendido, sendo que ele não funciona sem o base. Portanto, no meu projeto extendido, eu utilizo o menu completo do projeto base, mais os itens do segundo projeto.

B

Então…

O menu do segundo projeto seria uma “extenção” do menu do projeto base… não rola de inclui-lo em rumtime? tipo de tá fazendo com as classes?

Outra alternativa seria vc gerar uma tag para o ant, não é complicado, para fazer o que vc tá tentando…

leandrobla

Bom, num sei se seria viável, porque não tenho idéia como fazer uma tag pro ANT…

Mas deve ter um jeito para o que estou fazendo… Uma coisa que também resolveria meu problema seria saber como eu posso jogar o conteúdo de um arquivo para uma property do build.properties.

Se isso for possível, já é suficiente.

B

Como escrever é mole:

http://ant.apache.org/manual/index.html

Tutorials->Writing Tasks

Criado 31 de julho de 2008
Ultima resposta 31 de jul. de 2008
Respostas 7
Participantes 2