views:

25

answers:

1

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"&gt;
<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.

+1  A: 

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.

Pascal Thivent
Pascal Thivent thanks.. but the problem is that I have a project structure already implemented by hand... and I can't change it... so I can't use that archetype... thanks anyway
Andrew
@Andrew If you re-read my answer carefully, you'll see that I'm suggesting to **mimic** the ear configuration (which is working, unlike yours) you'd get with the archetype, not to replace your existing project structure...
Pascal Thivent
oh.... sorry Pascal... thanks... I'm giving it a try...
Andrew
It worked for me... I've done some project specific changes but generally the answer solved my problem... thanks!
Andrew
@Andrew Glad it's solved.
Pascal Thivent