Search code examples
jakarta-eemaven-2jbossseammaven-ear-plugin

Seam framework, maven-ear-plugin and Jboss as 5.1.0


Can someone provide me a working example of pom.xml which is used to build and deploy ear archive on jboss 5.1.0.
In my application I have two modules - web (.war archive) and java (.jar). I'm trying to accoplish the above task using the following pom.xml

<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>tp</artifactId>
    <groupId>com.domain.project</groupId>
    <version>0.1</version>
</parent>
<groupId>com.domain.project</groupId>
<artifactId>build</artifactId>
<version>0.1</version>
<packaging>ear</packaging>
<name>project</name>

<repositories>
    ...
</repositories>

<build>

    <finalName>project</finalName>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jboss-maven-plugin</artifactId>
            <version>1.4.1</version>
            <configuration>
                <jbossHome>/opt/jboss-5.1.0.GA</jbossHome>
                <hostName>localhost</hostName>
                <serverName>default</serverName>
                <port>8080</port>
                <fileNames>
                    <fileName>${basedir}/target/${build.finalName}.ear</fileName>
                </fileNames>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.4.2</version>
            <configuration>
                <generateApplicationXml>true</generateApplicationXml>
                <jboss>
                    <modules>
                        <webModule>web.war</webModule>
                        <ejbModule>core.jar</ejbModule>
                    </modules>
                    <version>5</version>
                    <loader-repository>com.domain.project:loader=project</loader-repository>
                </jboss>
                <modules>
                    <webModule>
                        <groupId>com.domain.project</groupId>
                        <artifactId>web</artifactId>
                        <bundleDir>/</bundleDir>
                    </webModule>
                    <javaModule>
                        <groupId>com.domain.project</groupId>
                        <artifactId>core</artifactId>
                        <bundleFileName>core.jar</bundleFileName>
                    </javaModule>

                </modules>
            </configuration>
        </plugin>

    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>com.domain.project</groupId>
        <artifactId>core</artifactId>
        <version>0.1</version>
    </dependency>
    <dependency>
        <groupId>com.domain.project</groupId>
        <artifactId>web</artifactId>
        <version>0.1</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.el</groupId>
        <artifactId>jboss-el</artifactId>
        <version>1.0_02.CR4</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.seam</groupId>
        <artifactId>jboss-seam</artifactId>
        <version>2.2.0.GA</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.jbpm</groupId>
        <artifactId>jbpm-jpdl</artifactId>
        <version>3.2.2</version>
        <type>jar</type>
    </dependency>
</dependencies>

However I'm getting the following exception
org.jboss.deployers.spi.DeploymentException: Cannot process metadata

Seems that application.xml or jboss-app.xml aren't generated well... Any help will be appreciated.


Solution

  • It seems hard (or at least time consuming) to reproduce your project structure and problem. For this reason, my suggestion would be to use the archetype announced in Getting started with JBoss Seam and Maven in 10 seconds! to create a sample application (with a build that is working as expected) and to mimic the configuration.

    To bootstrap the project, run the following command:

    $ mvn archetype:generate \
            -DarchetypeGroupId=de.akquinet.jbosscc \
            -DarchetypeArtifactId=jbosscc-seam-archetype \
            -DarchetypeVersion=1.2 \
            -DarchetypeCatalog=http://seam-archetype.sourceforge.net/jbosscc-seam-archetype/1.2/archetype-catalog.xml 
    ...
    Define value for property 'groupId': : com.domain.project
    Define value for property 'artifactId': : seam-demo
    Define value for property 'version':  1.0-SNAPSHOT: : 
    Define value for property 'package':  com.domain.project: : 
    Define value for property 'seamVersion': : 2.2.0.GA
    Confirm properties configuration:
    groupId: com.domain.project
    artifactId: seam-demo
    version: 1.0-SNAPSHOT
    package: com.domain.project
    seamVersion: 2.2.0.GA
     Y: : 
    ...
    [INFO] BUILD SUCCESS
    ...
    

    And cd into the seam-demo directory, run mvn install and both the application.xml and the the jboss-app.xml will be generated in the ear module.

    Then, using the jboss-maven-plugin configuration you provided to hard-deploy the ear to a started JBoss worked for me.