JBoss Seam project setup with Maven — Part 2: EAR deployment

In a previous post, I discussed how to setup a Maven project for your Seam WAR application. However, most Seam developers are probably working on applications with EJB3 components to fully take advantage of the service infrastructure of the JBoss AS container. So, to complete this series, I setup a maven project for Seam EAR deployment. The project structure is as follows. The ejb module builds the JAR for EJB3 components; the war project build the web application; and the ear module builds the EAR application with necessary library JARs.

CODE:
  1. .
  2.  |-- pom.xml
  3.  |
  4.  |-- ear
  5.  |   `-- pom.xml
  6.  |
  7.  |-- ejb
  8.  |   |-- pom.xml
  9.  |   |-- src
  10.  |       `-- main
  11.  |           |-- java
  12.  |           |    `-- com
  13.  |           |         `-- example
  14.  |           |               `-- ejb
  15.  |           |                    |-- MyEnterpriseBeanImpl.java
  16.  |           |                    `-- MyEnterpriseBean.java
  17.  |            `-- resources
  18.  |                |-- seam.properties
  19.  |                 `--  ejb-jar.xml
  20.  |
  21.  |-- war
  22.       |-- pom.xml
  23.        `-- src
  24.             `-- main
  25.                  |-- java
  26.                  |   `-- com
  27.                  |       `-- example
  28.                  |             `-- SampleAction.java (and other Java source files)
  29.                  |-- resources
  30.                  |   |-- META-INF
  31.                  |   |   `-- persistence.xml
  32.                  |   |-- messages.properties
  33.                  |   `-- seam.properties
  34.                  `-- webapp
  35.                      |-- WEB-INF
  36.                      |    | -- components.xml
  37.                      |    | -- pages.xml
  38.                      |    | -- face-config.xml
  39.                      |     `-- web.xml
  40.                      `-- hello.xhtml (and other web content, CSS, templates, and images)

The main pom.xml file defines the shared libraries required by all modules. It optionally uses the Seam parent POM to set the version numbers for the dependency JARs. Here is how it might look like:

XML:
  1. <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">
  2.  
  3.   <repositories>
  4.     <repository>
  5.       <id>jboss-snapshot</id>
  6.       <name>The JBoss maven repo</name>
  7.       <url>http://snapshots.jboss.org/maven2</url>
  8.     </repository>
  9.   </repositories>
  10.   <parent>
  11.     <groupId>org.jboss.seam</groupId>
  12.     <artifactId>root</artifactId>
  13.     <version>2.0.0-SNAPSHOT</version>
  14.   </parent>
  15.  
  16.   <modelVersion>4.0.0</modelVersion>
  17.   <groupId>mystuff</groupId>
  18.   <artifactId>mystuff</artifactId>
  19.   <packaging>pom</packaging>
  20.   <version>1.0</version>
  21.   <name>mystuff</name>
  22.   <url>http://maven.apache.org</url>
  23.  
  24.   <dependencies>
  25.  
  26.     <dependency>
  27.       <groupId>log4j</groupId>
  28.       <artifactId>log4j</artifactId>
  29.       <scope>provided</scope>
  30.     </dependency>
  31.  
  32.     <dependency>
  33.       <groupId>junit</groupId>
  34.       <artifactId>junit</artifactId>
  35.       <scope>test</scope>
  36.     </dependency>
  37.  
  38.   </dependencies>
  39.  
  40.   <modules>
  41.     <module>ejb</module>
  42.     <module>war</module>
  43.     <module>ear</module>
  44.   </modules>
  45.  
  46.   <build>
  47.     <plugins>
  48.       <plugin>
  49.         <groupId>org.apache.maven.plugins</groupId>
  50.         <artifactId>maven-compiler-plugin</artifactId>
  51.         <configuration>
  52.           <source>1.5</source>
  53.           <target>1.5</target>
  54.         </configuration>
  55.       </plugin>
  56.     </plugins>
  57.   </build>
  58. </project>

The ejb/pom.xml file defines the dependencies for the EJB3 module. Everything here is in the provided scope -- unless testing-specific libraries, which are in the test scope.

XML:
  1. <project>
  2.  
  3.   <parent>
  4.     <artifactId>mystuff</artifactId>
  5.     <groupId>mystuff</groupId>
  6.     <version>1.0</version>
  7.   </parent>
  8.  
  9.   <modelVersion>4.0.0</modelVersion>
  10.   <groupId>mystuff</groupId>
  11.   <artifactId>ejb</artifactId>
  12.   <name>mystuff - ejb</name>
  13.   <version>1.0</version>
  14.   <url>http://maven.apache.org</url>
  15.  
  16.   <build>
  17.     <finalName>ejb</finalName>
  18.   </build>
  19.  
  20.   <dependencies>
  21.  
  22.     <dependency>
  23.       <groupId>org.hibernate</groupId>
  24.       <artifactId>hibernate</artifactId>
  25.       <scope>provided</scope>
  26.     </dependency>   
  27.  
  28.     <dependency>
  29.       <groupId>org.hibernate</groupId>
  30.       <artifactId>hibernate-entitymanager</artifactId>
  31.       <scope>provided</scope>
  32.     </dependency>
  33.  
  34.     <dependency>
  35.       <groupId>org.hibernate</groupId>
  36.       <artifactId>hibernate-annotations</artifactId>
  37.       <scope>provided</scope>
  38.     </dependency>
  39.  
  40.     <dependency>
  41.       <groupId>org.hibernate</groupId>
  42.       <artifactId>hibernate-validator</artifactId>
  43.       <scope>provided</scope>
  44.     </dependency>
  45.  
  46.     <dependency>
  47.       <groupId>org.jboss.seam</groupId>
  48.       <artifactId>jboss-seam</artifactId>
  49.       <scope>provided</scope>
  50.     </dependency>
  51.  
  52.     <dependency>
  53.       <groupId>javax.ejb</groupId>
  54.       <artifactId>ejb-api</artifactId>
  55.       <scope>provided</scope>
  56.     </dependency>
  57.  
  58.     <dependency>
  59.       <groupId>hsqldb</groupId>
  60.       <artifactId>hsqldb</artifactId>
  61.       <version>1.7.2</version>
  62.       <scope>test</scope>
  63.     </dependency>
  64.  
  65.   </dependencies>
  66.  
  67. </project>

The war/pom.xml file defines the dependencies for the WAR module. It depends on the ejb module.

XML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project>
  3.   <parent>
  4.     <artifactId>mystuff</artifactId>
  5.     <groupId>mystuff</groupId>
  6.     <version>1.0</version>
  7.   </parent>
  8.   <modelVersion>4.0.0</modelVersion>
  9.  
  10.   <groupId>mystuff</groupId>
  11.   <artifactId>war</artifactId>
  12.   <name>mystuff - web</name>
  13.   <version>1.0</version>
  14.   <packaging>war</packaging>
  15.   <url>http://maven.apache.org</url>
  16.  
  17.   <build>
  18.     <finalName>war</finalName>
  19.   </build>
  20.  
  21.   <dependencies>
  22.  
  23.     <dependency>
  24.       <groupId>mystuff</groupId>
  25.       <artifactId>ejb</artifactId>
  26.       <version>1.0</version>
  27.       <scope>provided</scope>
  28.       <type>ejb</type>
  29.     </dependency>
  30.  
  31.    <!-- The following 4 dependencies are included in the WEB-INF/lib of the war -->
  32.  
  33.     <dependency>
  34.       <groupId>org.jboss.seam</groupId>
  35.       <artifactId>jboss-seam-ui</artifactId>
  36.     </dependency>
  37.  
  38.     <dependency>
  39.       <groupId>org.jboss.seam</groupId>
  40.       <artifactId>jboss-seam-debug</artifactId>
  41.     </dependency>
  42.  
  43.     <dependency>
  44.       <groupId>com.sun.facelets</groupId>
  45.       <artifactId>jsf-facelets</artifactId>
  46.     </dependency>
  47.  
  48.     <dependency>
  49.       <groupId>org.richfaces.ui</groupId>
  50.       <artifactId>richfaces-ui</artifactId>
  51.     </dependency>
  52.  
  53.     <!-- The "provided" dependencies are only need for compilation -->
  54.  
  55.     <dependency>
  56.       <groupId>javax.servlet</groupId>
  57.       <artifactId>servlet-api</artifactId>
  58.       <scope>provided</scope>
  59.     </dependency>
  60.  
  61.     <dependency>
  62.       <groupId>org.jboss.seam</groupId>
  63.       <artifactId>jboss-seam</artifactId>
  64.       <scope>provided</scope>
  65.     </dependency>
  66.  
  67.     <dependency>
  68.       <groupId>javax.faces</groupId>
  69.       <artifactId>jsf-api</artifactId>
  70.       <scope>provided</scope>
  71.     </dependency>
  72.  
  73.     <dependency>
  74.       <groupId>javax.faces</groupId>
  75.       <artifactId>jsf-impl</artifactId>
  76.       <scope>provided</scope>
  77.     </dependency>
  78.  
  79.     <dependency>
  80.       <groupId>org.hibernate</groupId>
  81.       <artifactId>hibernate-validator</artifactId>
  82.       <scope>provided</scope>
  83.     </dependency>
  84.  
  85.   </dependencies>
  86. </project>

The ear/pom.xml file defines how the EAR application is assembled. You need to declare any JARs you want to include in the EAR as dependencies. I also used a JBoss-specific element to setup the class loader repository for the application. It is often needed in JPA applications. Yes, it is verbose -- if you have a better idea, let me know. :)

XML:
  1. <project>
  2.  
  3.   <parent>
  4.     <artifactId>mystuff</artifactId>
  5.     <groupId>mystuff</groupId>
  6.     <version>1.0</version>
  7.   </parent>
  8.  
  9.   <modelVersion>4.0.0</modelVersion>
  10.   <groupId>mystuff</groupId>
  11.   <artifactId>ear</artifactId>
  12.   <name>mystuff - ear</name>
  13.   <packaging>ear</packaging>
  14.   <version>1.0</version>
  15.   <url>http://maven.apache.org</url>
  16.  
  17.   <dependencies>
  18.  
  19.     <dependency>
  20.       <groupId>mystuff</groupId>
  21.       <artifactId>ejb</artifactId>
  22.       <version>1.0</version>
  23.       <type>ejb</type>
  24.     </dependency>
  25.  
  26.     <dependency>
  27.       <groupId>mystuff</groupId>
  28.       <artifactId>war</artifactId>
  29.       <version>1.0</version>
  30.       <type>war</type>
  31.     </dependency>
  32.  
  33.     <dependency>
  34.       <groupId>org.jboss.seam</groupId>
  35.       <artifactId>jboss-seam</artifactId>
  36.       <type>ejb</type>
  37.     </dependency>
  38.  
  39.     <dependency>
  40.       <groupId>org.jboss.seam</groupId>
  41.       <artifactId>jboss-el</artifactId>
  42.       <exclusions>
  43.         <exclusion>
  44.           <groupId>javax.el</groupId>
  45.           <artifactId>el-api</artifactId>
  46.         </exclusion>
  47.       </exclusions>
  48.       <type>jar</type>
  49.     </dependency>
  50.  
  51.     <dependency>
  52.       <groupId>commons-beanutils</groupId>
  53.       <artifactId>commons-beanutils</artifactId>
  54.       <exclusions>
  55.         <exclusion>
  56.           <groupId>commons-logging</groupId>
  57.           <artifactId>commons-logging</artifactId>
  58.         </exclusion>
  59.       </exclusions>
  60.       <type>jar</type>
  61.     </dependency>
  62.  
  63.   </dependencies>
  64.  
  65.   <build>
  66.     <plugins>
  67.       <plugin>
  68.         <groupId>org.apache.maven.plugins</groupId>
  69.         <artifactId>maven-ear-plugin</artifactId>
  70.         <configuration>
  71.           <jboss>
  72.             <version>4</version>
  73.             <loader-repository>mystuff:loader=mystuff.ear</loader-repository>
  74.           </jboss>
  75.  
  76.           <modules>
  77.             <webModule>
  78.               <groupId>mystuff</groupId>
  79.               <artifactId>war</artifactId>
  80.               <contextRoot>mystuff</contextRoot>
  81.             </webModule>
  82.  
  83.             <ejbModule>
  84.               <groupId>mystuff</groupId>
  85.               <artifactId>ejb</artifactId>
  86.             </ejbModule>
  87.  
  88.             <ejbModule>
  89.               <groupId>org.jboss.seam</groupId>
  90.               <artifactId>jboss-seam</artifactId>
  91.             </ejbModule>
  92.  
  93.             <!-- The stuff that needs to go in the lib directory.
  94.                  They will not be included in application.xml -->
  95.  
  96.             <jarModule>
  97.               <groupId>org.jboss.seam</groupId>
  98.               <artifactId>jboss-el</artifactId>
  99.               <bundleDir>lib</bundleDir>
  100.             </jarModule>
  101.  
  102.             <jarModule>
  103.               <groupId>commons-beanutils</groupId>
  104.               <artifactId>commons-beanutils</artifactId>
  105.               <bundleDir>lib</bundleDir>
  106.             </jarModule>
  107.  
  108.           </modules>
  109.         </configuration>
  110.       </plugin>
  111.     </plugins>
  112.   </build>
  113.  
  114. </project>

33 Responses to “JBoss Seam project setup with Maven — Part 2: EAR deployment”

  1. Gerson K. Motoyama Says:

    nice post! you just need to remove the ‘ejb type’ of ‘jboss-seam’ dependency in the ‘ear/pom.xml’ file…

    org.jboss.seam
    jboss-seam

  2. Michael Yuan Says:

    Gerson,

    I think that the jboss-seam.jar does need to be listed as an EJB module in order for the EJB transaction listeners, EJb Timers, and other features to function. Am I missing something here?

    cheers
    Michael

  3. Chris Mercer Says:

    It would be really nice to see a maven2 example with embedded jboss running some ejb3 tests. Something similar in functionality, but just focused on seam, as appfuse. Creating a simple site for users and groups coming from the database.

    I’ve been attempting to setup embedded jboss and its a hurdle to get to the point where you can do some testing.

  4. Gerson K. Motoyama Says:

    hi Michael,

    I’ve just checked the deployment descriptor of Seam 2.x and noticed that the jboss-seam.jar is REALLY an EJB module (Seam 1.x do NOT list as an EJB module). But in this case, once the ‘Seam root pom’ just declares the jboss-seam.jar as an JAR type, its version must be specified for EJB type in the ejb/pom.xml… if not, the maven will complain about ‘version missing’. I’m not a maven expert but maybe it would be helpful if the ‘Seam root pom’ could also declare the jboss-seam’s EJB type version so that it would not be necessary to “hardcode” the version in application’s pom.

  5. Gerson K. Motoyama Says:

    uops, I mean… I’ve just checked the deployment descriptor files of the applications that use Seam 2.x and Seam 1.x…

    Sorry.

  6. Tobias Says:

    Hi Michael,
    could you please elaborate on why the jboss-seam.jar needs to be included like this or some features won’t work?

    TIA,
    Tobias

  7. Michael Yuan Says:

    Gerson,

    I guess it is a tricky situation for the Seam root pom — it has to accommodate WAR-only deployment as well. I am not sure … But you do need to use jboss-seam.jar as an EJB module to take full advantage of EJB3 features in Seam.

    cheers
    Michael

  8. Michael Yuan Says:

    Tobias,

    If you look at the classes inside jboss-seam.jar, there are quite a few EJB3 components. The ones I am aware of are the EJB3 transaction listener and the EJB3 Timer for asynchronous methods.

    You might not need them — you can use jboss-seam.jar in a WAR deployment after all. So, do not worry if you do not encounter any issues. :)

    cheers
    Michael

  9. Yuriy Says:

    I think “mystuff” and “myapp” groups and artifacts are a bit messed up between parent and children POMs.

  10. Michael Yuan Says:

    Yuriy,

    Good catch! I fixed it now. :)

    cheers
    Michael

  11. Meiko Rachimow Says:

    Ok, another try…

    Perhaps this may help someone:
    TestNg integration for Seam 1.2.1(seam-booking example):

    1. this link helped me
    http://docs.codehaus.org/display/MAVENUSER/How+to+use+the+JBoss+Embedded+EJB3+Container+for+Unit+testing

    2. put generated pom.xmls and jars into a local or your remote maven repository

    3. use generated “microcontainer” jars as dependencies of the ejb-module

    4. other used dependencies (jsf-api (1.2), testng (5.5), servlet-api(2.5), dbunit(2.1))

    5. ejb-module pom:
    - use the maven-surefire-plugin (2.4-collab-SNAPSHOT)
    - configure a plugin repository: http://people.apache.org/repo/m2-snapshot-repository/

    6. put test-classes in ejb-module/src/test/java

    7. now we need some other files in ejb-module/src/test/resources :
    from the frontend:
    - components.xml into ejb-module/src/test/resources/WEB-INF/
    - components.properties (embeddedEjb = false, jndiName = ejbName/local) into ejb-module/src/test/resources/

    all from seam-1.2.1.GA/embedded-ejb/conf into ejb-module/src/test/resources/

    If you have an other or better solution…
    Please give it to me… :-)

    It took much time to get the right dependencies and let them work together…
    I think we need a online maven repository for seam and the most used third party jars.

  12. Meiko Rachimow Says:

    i have to correct me :
    this is my components.xml in the folder: ejb-module/src/test/resources

    embeddedEjb true
    jndiPattern \#{ejbName}/local

  13. Meiko Rachimow Says:

    an other thing is the hot deployment (eclipse + m2eclipse-plugin http://m2eclipse.codehaus.org/)
    my solution (also not really satisfying):

    - in the jboss-service.xml configure a new deploy folder:
    ….eclipseWorkspace/myProject/ear/target/deploy/

    - ear/pom.xml :
    place in the configuration of the ear-plugin

    ${project.build.directory}/deploy/${project.build.finalName}.ear

    also in the configuration node give our “webModule”:

    true

    - war/pom.xml
    place in the configuration of the war-plugin

    ${project.parent.basedir}/ear/target/deploy/projectName-${pom.version}.ear/${project.build.finalName}.war

    in eclipse right-click the project,
    -> properties -> builders -> new -> maven build:
    base directory:

    ${workspace_loc:/trilobita/trilobita-frontend/}

    and
    Auto Build Goals: compile war:exploded

    the problem is, that every change in the whole project leads to an auto build…
    so i turn it off while not working on war-files

  14. Meiko Rachimow Says:

    an other thing is the hot deployment (eclipse + m2eclipse-plugin http://m2eclipse.codehaus.org/)
    my solution (also not really satisfying):

    - in the jboss-service.xml configure a new deploy folder:
    …eclipseWorkspace/myProject/ear/target/deploy/

    - ear/pom.xml :
    place a “workDirectory”-node in the configuration of the ear-plugin containing:

    ${project.build.directory}/deploy/${project.build.finalName}.ear

    also in this configuration node give our “webModule”:
    a node “unpack” containing true

    - war/pom.xml
    place in the configuration of the war-plugin
    a node “webappDirectory” containing

    ${project.parent.basedir}/ear/target/deploy/projectName-${pom.version}.ear/${project.build.finalName}.war

    in eclipse right-click the project,
    -> properties -> builders -> new -> maven build:
    base directory:

    ${workspace_loc:/trilobita/trilobita-frontend/}

    and
    Auto Build Goals: compile war:exploded

    the problem is, that every change in the whole project leads to an auto build…
    so i turn it off while not working on war-files

  15. Meiko Rachimow Says:

    okay reading other posts i found the maven repository for seam. good job !
    i will try it.

  16. Brent Ryan Says:

    Anyone have issues with provided scope in the WAR file for your EJB? I’m deploying to JBoss 4.2 and the WAR file doesn’t seem to know about the EJB contained in the EAR. Is this normal?

  17. Brent Ryan Says:

    Ok, nevermind. I figured it out.

    JBoss has different class loading mechanism then other EE containers. You have to specify a loader repository in jboss-app and jboss-web.xml files.

  18. Logan Hutchinson Says:

    Great article!

    But if I follow these instructions and compare my result to what seam-gen generates, I am missing files in the ear’s lib directory. Specifically:

    antlr-runtime.jar
    backport-util-concurrent.jar
    commons-digester.jar
    commons-fileupload.jar
    drools-compiler.jar
    drools-core.jar
    icefaces-comps.jar
    icefaces-facelets.jar
    icefaces.jar
    jbpm-jpdl.jar
    mvel14.jar

    I suspect that some additional modules need to be specified for the ear’s pom.xml.

  19. Logan Hutchinson Says:

    Also, I had to add a dependency to the ear’s pom.xml to avoid the el-api-1.0.jar from being included in the ear’s lib:

    javax.el
    el-api
    1.0
    provided

  20. Michael Yuan Says:

    Logan,

    Seam integrates with a lot of other frameworks. The jars you listed are needed when you need your Seam app to utilize jBPM, Drools (for advanced security), and icefaces.

    But for simple web apps, those jars are not needed.

    cheers
    Michael

  21. Stephane Says:

    > Yes, it is verbose — if you have a better idea, let me know. :)

    Well, what about not declaring the ejbModule entries in a first place. They are totally useless unless you want to configure the way the EJBs are bundled in the ear (just like the lib directory in the javaModule in the same example).

    You can also use dependencyManagement in the parent pom to share the version of the libs of you’re using, even if they are from the same project. This restricts the dependencies to the groupId/artifactId.

    Hope that helps.

  22. Steve Hodson Says:

    Micheal,

    A great contribution to what is a very frustrating area of development. Speaking of which when I try and use mvn install -N on the root pom maven kindly informs me that I am missing ‘dependencies.dependency.version’ - placing a version into the junit entry fixes this problem but is this intended on your part? Or is Maven broken (again)? It does make it very difficult to convince managers of the benefits of using Maven but I do think this contribution goes some way to achieving this.

    Thanks

  23. Dusan Krizan Says:

    Hello all,

    could somebody publish example as a zip file, please. I tried create my own along Michaels instructions, but finally I am not able deploy ear file to jboss 4.2.2.GA. I am getting a lots of ClassNotFound exceptions.

    Thanks
    Dusan

  24. Mauro Says:

    A nice stuff to do is put maven to filter the WEB-INF :

    maven-war-plugin

    src/resources-WEB-INF
    WEB-INF
    true


    for example
    This way you can filter the componet.xml

    So you culd filter some propertys like (In my case):
    jndi-pattern=”evento-ear-${project.version}/#{ejbName}/local”

    and some configurable component property, according some active profile:

    ${diretorioUploadRetornoBB}


    for example

  25. Zarar Says:

    You have to put this project up for download somehwere!

  26. Sefai Says:

    Can you please update a sample application with this configuration…
    I am working on this for 2 weeks with no success.I made lots of changes for lots of deployment exceptions,but I cannot solve the last one:”java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory”…

    thanks…

  27. Denis Zjukow Says:

    Hi, can anyone explain how to setup eclipse’s EJB project so that it would be on one hand a maven project, on the other hand a valid eclipse EJB module. The problem is that I can’t make hot deployment work. There is a post by Meiko Rachimow about that above. Can anyone give a more detailed explanation, please. Thank you…

  28. Mathias Nilsson Says:

    Has anyone got this to work? I get java.lang.ClassNotFoundException: org.jboss.seam.servlet.SeamListener after components are validated.

    Anyone that has a zip for this startup project with all the things in place?

  29. Derk Says:

    — It optionally uses the Seam parent POM to set the version numbers for the dependency JARs. —

    First of all thanks for this tutorial but I have some problems. I just started to build some apps with maven and seam. It keeps complaining about the version of jboss and jboss-el. I have set the parent in my main pom to the jboss seam 2.1.1-snapshot but he gives me errors about the version.
    I did exactly copied the dependencies from above examples but I can’t figure it out.
    Maven should get the version automaticly from the parent pom in my main pom right?

    regards,

    Derk

  30. ngonidan Says:

    May you attach a zip file for this tutorial, maybe we can work from there. Thanx

  31. Kyle Burke Says:

    Which version of Maven are you guys who had success using? I suspect that I have an issue with mvn 2.0.9 not inheriting dependencies and versions from the seam root pom.

  32. Robert Says:

    Hi, michael. I’m have some questiom about maven2 with seam ejb project. My project is structured like this:

    -> src
    -> pageflows
    -> web

    -> dist
    -> EarContent
    -> resources

    -> ejbModule
    -> build
    -> sql

    It was created by the eclipse plugin with the JBoss tools.
    I wonder if I should continue using this structure and only create the pom’s. Or do I customize the structure of the project to then create the pom’s.
    Because the structure of the project that used this example as different from mine. And I would like some tips for setting up of my pom on your point of view.

  33. Robert Says:

    Michael, please attach the source code of this example.

Leave a Reply