Você está na página 1de 7

https://jadsonjs.wordpress.

com/2008/11/23/criando-arquivos-jar-war-e-ear/

Bula de Remdio

novembro 23, 2008

Criando arquivos JAR, WAR e EAR


Filed under: Configurao/Instalao jadsonjs @ 8:23 pm
Esses trs arquivos so os arquivos mais utilizados para distribuio de aplicaes Java. Existem vrias maneiras de se gerar esses arquivos,
algumas IDEs Java como o NetBeans j faz tudo automtico para voc. Mas eu gosto de criar projetos bsicos e gerar na mo os arquivos para
ficar menos dependente da IDE, vai que de repente surge a necessidade de mudar de NetBeans para Eclipse ou vice-versa. Voc pode criar seu
projeto na estrutura que quiser dentro das IDEs, desde que final gere os arquivos na estrutura definida nesse artigo para a districuiao das suas
aplicaces.
Um arquivo JAR apenas um arquivo compactado (igual a um arquivo.zip) que contm um diretrio de configuraes chamado META-INF
com um arquivo MANIFEST.MF dentro dele.
|-META-INF
|

| MANIFEST.MF

|- DIRETORIO_1
|

|- *.class

|- DIRETORIO_N
Segue um script ANT, que deve ficar na raiz do seu projeto, e que gera um arquivo nessa estrutura:

1 de 7

https://jadsonjs.wordpress.com/2008/11/23/criando-arquivos-jar-war-e-ear/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

<?xml version="1.0" encoding="UTF-8"?>


<project name="Criando arquivo EAR " basedir="." default="init">
<!-- definindo as propriedades do arquivo JAR -->
<property name="src" value="src"/>
<property name="bin" value="bin"/>
<property name="libs" value="libs"/>
<property name="dist" value="dist"/>
<property name="jar.file" value="${dist}/exemplo.jar" />

<!-- definindo onde estao os JARs dos sistema para a compilacao -->
<path id="classpath.base">
<fileset dir="${libs}">
<include name="*.jar" />
</fileset>
</path>
<target name="init">
<echo>Iniciando build do arquivo JAR com Ant</echo>
</target>
<target name="clean" depends="init">
<delete dir="${bin}"></delete>
</target>
<target name="prepare" depends="init">
<mkdir dir="${bin}" />
</target>
<!-- compilando os .java do diretorio src -->
<target name="compile" depends="init, clean, prepare">
<echo>Compilando as classes do diretorio src</echo>
<javac srcdir="${src}" destdir="${bin}" verbose="false">
<classpath refid="classpath.base" />
</javac>
</target>
<!--cria o JAR -->
<target name="criar JAR " depends="compile">
<echo>Gerando arquivo JAR </echo>
<jar jarfile="${jar.file}">
<fileset dir="${bin}">
</fileset>
</jar>
</target>
</project>

Os arquivos WAR seguem a mesma linha de raciocnio, mas tem a estrutura um pouco mais complexa
por causa do diretrio WEB-INF, onde esto as informaes do mdulo web. Qualquer arquivo na
estrutura que se segue pode ser deployado em um servidor de aplicao web java.
|-META-INF
|

| MANIFEST.MF

| WEB-INF
|

| classes

| lib

| web.xml

|- pacotes.*.class

|- *.jar

|
|- DIRETORIO_1
|

|- *.jsp

|- DIRETORIO_N
|- index.jsp

2 de 7

https://jadsonjs.wordpress.com/2008/11/23/criando-arquivos-jar-war-e-ear/
|-index.html

Abaixo um script ANT para gerar um arquivo WAR:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

<?xml version="1.0" encoding="UTF-8"?>


<project name="Criacao do arquivo WAR" basedir="." default="deploywar">
<!-- definicao das propriedades dos arquivos -->
<property name="src" value="src"/>
<property name="bin" value="bin" />
<property name="libs" value="libs" />
<property name="warfile.name" value="dist/exemplo.war"/>
<property name="webappdir" value="web pages" />
<property name="webxml.file" value="${webappdir}/WEB-INF/web.xml"/>
<property name="webinf.dir" value="${webappdir}/WEB-INF" />
<property name="deploy.home" value="/home/.../jboss/server/default/deploy"/>
<!-- definindo onde estao os JARs dos sistema -->
<path id="classpath.base">
<fileset dir="${libs}">
<include name="*.jar" />
</fileset>
</path>
<target name="init">
<echo>Iniciando build web do projeto</echo>
</target>
<target name="clean" depends="init">
<delete dir="${bin}"/>
</target>
<target name="prepare" depends="init">
<mkdir dir="${bin}" />
</target>
<target name="compile" depends="init, clean, prepare">
<echo>Compilando classes</echo>
<javac srcdir="${src}" destdir="${bin}" verbose="false">
<classpath refid="classpath.base" />
</javac>
</target>
<!-- cria um arquivo war -->
<target name="criaWar" depends="compile">
<echo>Gerando arquivo WAR</echo>
<war warfile="${warfile.name}" webxml="${webxml.file}">
<fileset dir="${webappdir}" >
<include name="*.html" />
<include name="*.jsp" />
</fileset>
<classes dir="${bin}" />
<lib dir="${libs}">
<exclude name="alcuma_jar_desnecessario_ao_modulo_web.jar" />
</lib>
<webinf dir="${webinf.dir}">
<include name="${webxml.file}" />
</webinf>
</war>
</target>
<!-- faz o deploy no JBoss -->
<target name="deploywar" depends="criaWar">
<echo>Deploy do JBOSS</echo>
<copy file="${warfile.name}" todir="${deploy.home}" />
</target>
</project>

Para finalizar os arquivos EAR. So arquivos que, para variar, possuem um diretrio META-INF e
podem possuir vrios arquivos JARs e WARs dentro dele. Cada um com a sua prpria estrutura
j citadas anteriormente.

3 de 7

https://jadsonjs.wordpress.com/2008/11/23/criando-arquivos-jar-war-e-ear/
Seguem tambm o script ANT que gera um EAR:

4 de 7

https://jadsonjs.wordpress.com/2008/11/23/criando-arquivos-jar-war-e-ear/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

</pre>
<?xml version="1.0" encoding="UTF-8"?>
<project name="Criando arquivo EAR " basedir="." default="init">

<!-- definicao das propriedades dos arquivos -->


<property name="src" value="src"/>
<property name="webappdir" value="web pages"/>
<property name="bin" value="bin"/>
<property name="libs" value="libs"/>
<property name="dist" value="dist"/>
<property name="deploy.home" value="/home/.../jboss-4.2.0.GA/server/default/deploy"/>
<!-- definindo as propriedades do modulo web-->
<property name="warfile.name" value="${dist}/exemplo.war" />
<property name="webxml.file" value="${webappdir}/WEB-INF/web.xml" />
<property name="webinf.dir" value="${webappdir}/WEB-INF" />
<!-- definindo as propriedades do ear-->
<property name="metainf.dir" value="META-INF" />
<property name="session.jar.file" value="${dist}/exemplo.jar" />
<property name="application.ear.file" value="${dist}/exemplo.ear" />
<!-- definindo onde estao os JARs dos sistema para a compilacao -->
<path id="classpath.base">
<fileset dir="${libs}">
<include name="*.jar" />
</fileset>
</path>
<target name="init">
<echo>Iniciando build do Projeto EAR com Ant</echo>
</target>
<target name="clean" depends="init">
<delete dir="${bin}"></delete>
</target>
<target name="prepare" depends="init">
<mkdir dir="${bin}" />
</target>
<!-- compilando os .java do diretorio src -->
<target name="compile" depends="init, clean, prepare">
<echo>Compilando as classes do diretorio src</echo>
<javac srcdir="${src}" destdir="${bin}" verbose="false">
<classpath refid="classpath.base" />
</javac>
</target>
<!-- cria o arquivo war do ear -->
<target name="criaWar" depends="compile">
<echo>Gerando arquivo WAR</echo>
<war warfile="${warfile.name}" webxml="${webxml.file}">
<fileset dir="${webappdir}" >
<include name="*.html" />
<include name="*.jsp" />
</fileset>
<classes dir="${bin}">
<!-- As classes Java desses diretorios -->
<!-- nao fazem parte do modulo web -->
<exclude name="session/**" />
</classes>
<lib dir="${libs}">
<exclude name="jboss-ejb3x.jar" />
</lib>
<webinf dir="${webinf.dir}">
<include name="${webxml.file}" />
</webinf>
</war>
</target>
<!--cria o JAR com os EJBs -->
<target name="criar JAR EJB" depends="criaWar">
<echo>Gerando arquivo JAR com EJB </echo>
<jar jarfile="${session.jar.file}">
<fileset dir="${bin}">
<!-- Os beans do JSF nao estao no modulo EJB-->
<exclude name="managedbean/**" />

5 de 7

https://jadsonjs.wordpress.com/2008/11/23/criando-arquivos-jar-war-e-ear/
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

</fileset>
</jar>
</target>

<!-- cria o arquivo EAR -->


<target name="criar arquivo EAR" depends="criar JAR EJB">
<echo>Gerando arquivo EAR </echo>
<jar jarfile="${application.ear.file}">
<metainf dir="META-INF">
<include name="application.xml" />
</metainf>
<fileset dir="${dist}" includes="*.ejb3, *.jar, *.war, *.par" />
</jar>
<!-- se quiser apagar os arquivos gerados -->
<!-<delete file="${warfile.name}"/>
<delete file="${session.jar.file}"/>
-->
</target>
<!-- faz o deploy no JBoss -->
<target name="deploy-ear" depends="criar arquivo EAR, undeploy-ear">
<echo>Deploy aplicacao no JBOSS</echo>
<copy file="${application.ear.file}" todir="${deploy.home}" />
</target>
<!-- undeploy da aplicacao -->
<target name="undeploy-ear">
<echo>UnDeploy aplicacao no JBOSS</echo>
<delete file="${deploy.home}/exemplo.ear"/>
</target>
</project>
<pre>

Comments (3)

3 Comentrios
1. E voc saberia me dizer como que eu poderia fazer para criar arquivos EAR para aplicao feita no weblogic? a arquitetura de arquivos dele
diferente, e esse script no seria o completo para ele.
Comentrio por Eduardo Zimerer maro 19, 2009 @ 1:30 pm
Responder

6 de 7

https://jadsonjs.wordpress.com/2008/11/23/criando-arquivos-jar-war-e-ear/
2. Ol Eduardo,

Nunca trabalhei com WebLogic, WLI acho que deve ser um ferramenta que j possui um ambiente completo de desenvolvimento.
Quando voc fala monta uma arquitetura totalmente diferente, acredito que seja e estrutura dos arquivos que ele cria dentro dos projetos.
Mas o bom de Java que Java no uma linguagem de programao, uma especificao. Se o WebLogic um servidor Java ele deve
seguir essa especificao.
No importa onde ele coloque seus arquivos .class, por exemplo, se voc copia-los para o diretrio WEB-INF/classes do arquivo WAR a
aplicao vai funcionar.
Acho que era essa a sua dvida. Espero ter ajudado.
Comentrio por jadsonjs maro 20, 2009 @ 12:49 am
Responder
3. Ow bixo, valeu, me ajudou muito esse post na parte do EAR
Comentrio por Johanes dezembro 1, 2011 @ 1:48 pm
Responder
RSS (Really Simple Syndication) feed for comments on this post. TrackBack URI (Uniform Resource Identifier)
O tema Silver is the New Black. Crie um website ou blog gratuito no WordPress.com.

7 de 7

Você também pode gostar