Adicionando um arquivo jar via ant

12 respostas
marcioa1

Olá,

Tenho dois projetos separados e quero criar em um deles um arquivo jar contendo o arquivo jar do segundo projeto.

<jar jarfile="${lib}/Etiqueta.jar" basedir="${bin}" includes = "c:/projetos/workspace/dix/lib/dix.jar" MANIFEST="MANIFEST.MF"> </jar>

Não estou conseguindo. Como faço isto ?

Márcio

12 Respostas

passos

So o includes ja deveria funcionar… sera que ele nao ta se confundindo por causa das / não?

Tenta colocar ele na mão dentro do teu projeto e passa um caminho relativo

marcioa1

Passos,

Tentei seus conselhos mas não consegui.

Se puder, dê uma olhada no meu novo buid

<target name="jar" depends="prepara" description="Gera arquivo jar."> <copy file="c:/projetos/workspace/dix/lib/dix.jar" todir="${lib}"/> <jar jarfile="${lib}/AudCre.jar" basedir="${bin}" includes = "${lib}/Dix.jar" MANIFEST="MANIFEST.MF"> </jar> <copy file="${lib}/AudCre.jar" todir="g:/dimed/data mining/projetos/audcresp"/> </target>

Eu copiei o Dix.jar para dentro do lib, mas gerou um jar de apenas 1k.

Obrigado,

Márcio

passos

Isso quer dizer que ele nao colocou nem suas classes?

  1. Vc conferiu se ele realmente copiou o arquivo?

  2. Tenta includes = "${lib}/*.jar"

  3. Tenta

<target name="jar" 
 	depends="prepara"
 	description="Gera arquivo jar.">
 	<copy file="c:/projetos/workspace/dix/lib/dix.jar" todir="${lib}"/>
 	<jar 
 		destfile="${lib}/AudCre.jar" 
 		basedir="${bin}"
 		includes = "${lib}/dix.jar"
        >
        </jar>
 	<copy file="${lib}/AudCre.jar" todir="g:/dimed/datamining/projetos/audcresp"/>
</target>
marcioa1

passos

Ele gera apenas o Manifest ?????
<target name="jar" 
		depends="prepara"
		description="Gera arquivo jar.">
		<copy file="c:/projetos/workspace/dix/lib/dix.jar" todir="${lib}"/>
		<jar jarfile="${lib}/AudCre.jar" 
			 basedir="${bin}"
			 includes = "${lib}/*.jar"
			 MANIFEST="MANIFEST.MF">
		</jar>
		<copy file="${lib}/AudCre.jar" todir="g:/dimed/data mining/projetos/audcresp"/>
	</target>



Buildfile: C:\projetos\workspace\Audcresp\build.xml
prepara:
   [delete] Deleting directory C:\projetos\workspace\Audcresp\lib
    [mkdir] Created dir: C:\projetos\workspace\Audcresp\lib
jar:
     [copy] Copying 1 file to C:\projetos\workspace\Audcresp\lib
      [jar] Building MANIFEST-only jar: C:\projetos\workspace\Audcresp\lib\AudCre.jar
BUILD SUCCESSFUL
Total time: 907 milliseconds

Obrigado.

passos

Não… era pra ele incluir todos os .jar que estao dentro de ${lib} não tinha nem dentro dele?

OBS: Geralmente eu nao uso MANIFEST=“MANIFEST.MF”

marcioa1

passos

Inclui o seguinte <path id="classpath"> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> </path>

E ele acrescentou o tal do dix.jar. Mas ao rodar ele dá

Could not find the main class

Mas tenho um ManifestManifest-Version: 1.0 Ant-Version: Apache Ant 1.6.2 Created-By: 1.5.0_01-b08 (Sun Microsystems Inc.) main-class: controle.ControlaAudcre

Sinto que falta pouco. Quero agradecer sua atenção.

Márcio

passos

controle.ControlaAudcre esta no jar que vc esta gerando o no que vc esta adicionando (dix.jar)?

marcioa1

passos,

Está no jar que estou gerando.

Pelo Eclipse, eu consegui , através do Export, mas neste caso eu adicionei os *.class do projeto dix, e não o dix.jar que continha os *.class.

Mas não soube fazer isto pelo ant.

Antes eu tinha Audcre.jar com seus *.class e um dix.jar dentro. Não funcionava.

Agora eu tenho Audcre.jar com os *.class dele e os *.class do projeto dix. Assim funciona.

Como faço para o ant inserir no audcre.jar os *.class do dix? ( O Dix está em outra pasta ) .

Obrigado,

Márcio

passos

Bom vamos por parte… eu acho que o problema nao esta bem no ANT

Se vc ta tentando executar o controle.ControlaAudcre que ta no Audcre.jar e ao executar esta recebendo Could not find the main class tem haver com o manifest e nao com o .jar mesmo se o .jar nao estivesse la ele deveria funcionar… mesmo que devesse erro por depender de alguma forma do dix.jar mas nao deveria dar essa mensagem.

marcioa1

passos,

Eu tenho o Manifest

Com a target abaixo, eu consegui copiar os *.class de todos os pacotes do projeto Dix. E Funcionou

<target name="copia" description="Copia class do Dix"> <copy todir="${bin}" > <fileset dir="C:/projetos/workspace/DIX/bin/" > </fileset> </copy> </target>

Talvez falte um ou outro detalhe, mas o programa abriu. Será que com as classes do Dix dentro do jar, que antes estavam fora, a abertura ficou mais lenta ? Vou pesqusiar.

Obrigado pela sua ajuda. Estou indo para casa.
Boa noite,

márcio

passos

E… realmente falta algum detalhe pro seu novo jar entender que o jar dentro dele esta no classpath.

Particularmente nunca fiz isso… pois raramente trabalha com desktop.

Qualquer coisa posta ae!

marcioa1

passos,

Está resolvido, graças a Deus e a sua ajuda.

Foi preciso copiar as classes do Dix para a pasta bin do projeto “filho”.

O projeto DIX é utilizado por todos os outros projetos, pois contém classes de negócio utilizadoas pelos outros sistemas.

Abraços,

Márcio

Criado 28 de julho de 2005
Ultima resposta 29 de jul. de 2005
Respostas 12
Participantes 2