Proyecto EAR
El proyecto inicial que crearemos será un proyecto EAR.
EAR (Enterprise Archive) es un formato de archivo utilizado por Java EE, para el envasado de uno o más módulos en un solo archivo para que el despliegue de los diferentes módulos en un servidor de aplicaciones ocurra simultáneamente, de manera ordenada y coherente. También contiene archivos XML llamados descriptores de despliegue que describen cómo implementar los módulos. Ant, Maven o Gradle se utilizan para construir proyectos EAR.
Para crear un proyecto EAR, crearemos nuevo proyecto Maven – Enterprise Application
Una vez seleccionado el proyecto, deberemos indicar los el nombre de los paquetes, compañía y el ID del artefacto, hay que rellenar a vuestro gusto. Si pulsamos continuar aparecerá esta pantalla:
Aquí tendremos la opción de establecer el servidor donde desplegaremos el proyecto EAR, la versión de Java EE y además Netbeans nos permite la opción de crear dos proyectos dentro de nuestro EAR:
- Un módulo EJB, que puede servir para crear toda la lógica de negocio, persistencia, modelo de datos, etc.
- Una módulo WAR que contendrá la interfaz web de nuestra aplicación.
Si pulsamos Finalizar, en nuestro navegador de proyectos, tendremos la siguiente estructura:
Como podemos ver, Netbeans nos ayuda mucho en la creación de los proyectos, además de los POM, dependencias y demás parámetros de configuración.
¿Qué tendremos en nuestro pom.xml de cada proyecto?
pom.xml (ear project):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>mavenproject1</artifactId> <groupId>es.jesramgue.earproject</groupId> <version>1.0-SNAPSHOT</version> </parent> <groupId>es.jesramgue.earproject</groupId> <artifactId>mavenproject1-ear</artifactId> <version>1.0-SNAPSHOT</version> <packaging>ear</packaging> <name>mavenproject1-ear</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <version>2.8</version> <configuration> <version>6</version> <defaultLibBundleDir>lib</defaultLibBundleDir> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>es.jesramgue.earproject</groupId> <artifactId>mavenproject1-ejb</artifactId> <version>1.0-SNAPSHOT</version> <type>ejb</type> </dependency> <dependency> <groupId>es.jesramgue.earproject</groupId> <artifactId>mavenproject1-web</artifactId> <version>1.0-SNAPSHOT</version> <type>war</type> </dependency> </dependencies> </project>
pom.xml (ejb project):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>mavenproject1</artifactId> <groupId>es.jesramgue.earproject</groupId> <version>1.0-SNAPSHOT</version> </parent> <groupId>es.jesramgue.earproject</groupId> <artifactId>mavenproject1-ejb</artifactId> <version>1.0-SNAPSHOT</version> <packaging>ejb</packaging> <name>mavenproject1-ejb</name> <properties> <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> <compilerArguments> <endorseddirs>${endorsed.dir}</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ejb-plugin</artifactId> <version>2.3</version> <configuration> <ejbVersion>3.1</ejbVersion> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.6</version> <executions> <execution> <phase>validate</phase> <goals> <goal>copy</goal> </goals> <configuration> <outputDirectory>${endorsed.dir}</outputDirectory> <silent>true</silent> <artifactItems> <artifactItem> <groupId>javax</groupId> <artifactId>javaee-endorsed-api</artifactId> <version>7.0</version> <type>jar</type> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
pom.xml (war project):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>mavenproject1</artifactId> <groupId>es.jesramgue.earproject</groupId> <version>1.0-SNAPSHOT</version> </parent> <groupId>es.jesramgue.earproject</groupId> <artifactId>mavenproject1-web</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>mavenproject1-web</name> <properties> <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> <compilerArguments> <endorseddirs>${endorsed.dir}</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.6</version> <executions> <execution> <phase>validate</phase> <goals> <goal>copy</goal> </goals> <configuration> <outputDirectory>${endorsed.dir}</outputDirectory> <silent>true</silent> <artifactItems> <artifactItem> <groupId>javax</groupId> <artifactId>javaee-endorsed-api</artifactId> <version>7.0</version> <type>jar</type> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
Deja una respuesta