97 votes

Maven2: Meilleures pratiques pour les projets d'entreprise (fichier EAR)

Je suis juste de commutation de Fourmi à Maven et je suis à essayer de comprendre la meilleure pratique pour configurer une OREILLE à base de fichier de projet d'Entreprise?

Disons que je veux créer une jolie projet standard avec un fichier jar de l'Ejb, un fichier WAR pour le niveau Web et l'encapsulation de l'OREILLE fichier, correspondant à des descripteurs de déploiement.

Comment pourrais-je aller à ce sujet? Créer le projet avec archetypeArtifactId=maven-archetype-webapp qu'une guerre de fichiers et d'étendre à partir de là? Quelle est la meilleure structure de projet (et POM exemple de fichier) pour cela? Où voulez-vous de coller l'oreille lié à un fichier descripteurs de déploiement, etc?

Merci pour toute aide.

92voto

Mike Cornell Points 2661

Vous créez un nouveau projet. Le nouveau projet est l'OREILLE de l'assemblée de projet qui contient vos deux dépendances de votre projet EJB et de GUERRE le projet.

Donc en fait, vous avez trois projets maven ici. Un EJB. Une GUERRE. Une OREILLE qui tire les deux parties ensemble et crée l'oreille.

Descripteurs de déploiement peut être généré par maven, ou placé à l'intérieur du répertoire de ressources dans l'OREILLE de la structure de projet.

Le maven-oreille-plugin que vous utilisez pour configurer, et la documentation est bon, mais pas tout à fait clair si vous êtes toujours à essayer de comprendre comment maven œuvres en général.

Ainsi, à titre d'exemple, vous pourriez faire quelque chose comme ceci:

<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>myEar</artifactId>
<packaging>ear</packaging>
<name>My EAR</name>

<build>
  <plugins>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <plugin>
      <artifactId>maven-ear-plugin</artifactId>
      <configuration>
        <version>1.4</version>
        <modules>
          <webModule>
            <groupId>com.mycompany</groupId>
            <artifactId>myWar</artifactId>
    <bundleFileName>myWarNameInTheEar.war</bundleFileName>
            <contextRoot>/myWarConext</contextRoot>
          </webModule>
          <ejbModule>
            <groupId>com.mycompany</groupId>
            <artifactId>myEjb</artifactId>
    <bundleFileName>myEjbNameInTheEar.jar</bundleFileName>
          </ejbModule>
        </modules>
        <displayName>My Ear Name displayed in the App Server</displayName>
        <!-- If I want maven to generate the application.xml, set this to true -->
        <generateApplicationXml>true</generateApplicationXml>
      </configuration>
    </plugin>
    <plugin>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.3</version>
      <configuration>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
  </plugins>
  <finalName>myEarName</finalName>
</build>

<!-- Define the versions of your ear components here -->
<dependencies>
  <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>myWar</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>war</type>
  </dependency>
  <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>myEjb</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>ejb</type>
  </dependency>
</dependencies>

46voto

Patrick Garner Points 787

Ce qui m'a beaucoup aidé à faire courir le Maven archetype:generate objectif et de sélectionner l'un des archétypes, dont certains semblent être mis à jour régulièrement (en particulier JBoss semble être bien entretenus).

mvn archetype:generate

Des centaines d'archétypes paru dans un numéro de la liste à partir de laquelle choisir (519 dès maintenant!). L'objectif, toujours en cours d'exécution, qui m'a incité à faire une sélection par la saisie d'un nombre ou d'entrer une chaîne de recherche par exemple:

513: remote -> org.xwiki.commons:xwiki-commons-component-archetype
514: remote -> org.xwiki.rendering:xwiki-rendering-archetype-macro
515: remote -> org.zkoss:zk-archetype-component
516: remote -> org.zkoss:zk-archetype-webapp
517: remote -> ru.circumflex:circumflex-archetype (-)
518: remote -> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):

Je suis entré dans la chaîne de recherche "l'oreille", ce qui réduit la liste à seulement 8 points (comme aujourd'hui):

Choose archetype:
1: remote -> org.codehaus.mojo.archetypes:ear-j2ee14 (-)
2: remote -> org.codehaus.mojo.archetypes:ear-javaee6 (-)
3: remote -> org.codehaus.mojo.archetypes:ear-jee5 (-)
4: remote -> org.hibernate:hibernate-search-quickstart (-)
5: remote -> org.jboss.spec.archetypes:jboss-javaee6-ear-webapp 
6: remote -> org.jboss.spec.archetypes:jboss-javaee6-webapp-ear-archetype
7: remote -> org.jboss.spec.archetypes:jboss-javaee6-webapp-ear-archetype-blank
8: remote -> org.ow2.weblab.tools.maven:weblab-archetype-searcher

J'ai sélectionné "org.jboss.spec.archétypes:jboss-javaee6-oreille-webapp" (en entrant dans la sélection "5" dans cet exemple).

Ensuite, l'objectif m'a demandé d'entrer le groupId, artifactId, les noms de paquets, etc., et puis, il a généré le suivant exemple bien documenté de l'application:

[pgarner@localhost Foo]$ tree
.
|-- Foo-ear
|   `-- pom.xml
|-- Foo-ejb
|   |-- pom.xml
|   `-- src
|       |-- main
|       |   |-- java
|       |   |   `-- com
|       |   |       `-- foo
|       |   |           |-- controller
|       |   |           |   `-- MemberRegistration.java
|       |   |           |-- data
|       |   |           |   `-- MemberListProducer.java
|       |   |           |-- model
|       |   |           |   `-- Member.java
|       |   |           `-- util
|       |   |               `-- Resources.java
|       |   `-- resources
|       |       |-- import.sql
|       |       `-- META-INF
|       |           |-- beans.xml
|       |           `-- persistence.xml
|       `-- test
|           |-- java
|           |   `-- com
|           |       `-- foo
|           |           `-- test
|           |               `-- MemberRegistrationTest.java
|           `-- resources
|-- Foo-web
|   |-- pom.xml
|   `-- src
|       `-- main
|           |-- java
|           |   `-- com
|           |       `-- foo
|           |           `-- rest
|           |               |-- JaxRsActivator.java
|           |               `-- MemberResourceRESTService.java
|           `-- webapp
|               |-- index.html
|               |-- index.xhtml
|               |-- resources
|               |   |-- css
|               |   |   `-- screen.css
|               |   `-- gfx
|               |       |-- banner.png
|               |       `-- logo.png
|               `-- WEB-INF
|                   |-- beans.xml
|                   |-- faces-config.xml
|                   `-- templates
|                       `-- default.xhtml
|-- pom.xml
`-- README.md

32 directories, 23 files

Après avoir lu les quatre POM fichiers, qui ont été bien commenté, j'ai eu à peu près toutes les informations dont j'avais besoin.

./pom.xml
./Foo-ear/pom.xml
./Foo-ejb/pom.xml
./Foo-web/pom.xml

7voto

Raj Gurjar Points 66

NetBeans IDE définit automatiquement la structure qui est presque semblable à celle proposée par Patrick Garner. Pour les utilisateurs de NetBeans

Fichier->Nouveau projet -> du côté gauche à Maven et à droite sélectionnez Maven Enterprise Application et cliquez sur Next -> demande pour les noms de projet de guerre, ejb et paramètres.

L’IDE crée automatiquement la structure pour vous.

3voto

Roy Truelove Points 6532

J’ai été la recherche de haute et basse pour obtenir un exemple de bout à bout d’une complète maven-oreille-emballée application et enfin tombé sur ce. Disent les instructions lors de l’exécution par le biais de l’interface CLI mais pour votre application, sélectionnez l’option 2, utilisez l’option 1.

3voto

hcpl Points 5759

C’est un bon exemple de l’oreille-maven-plugin .

Vous pouvez également vérifier les archétypes maven qui sont disponibles à titre d’exemple. Si vous avez juste archétype mvn avorton : générer vous obtiendrez une liste des archétypes disponibles. L’un d’eux est

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X