Search code examples
javamavenmaven-3earmaven-ear-plugin

Invalid packaging for parent pom.xml, must be "pom" but is "ear"


Could anybody suggest me an solution with the following exception. I am going to create a multi-module project.

Parent Project name is LOGICBACKEND child project name is DBAccess

I need to have ear file of LOGICBACKEND which should contain DBAccess prjoects jar file.

I am getting following exception when i run mav clean install -P Developer.

[ERROR]The project com.project1.Database:DBAccess:1.0-SNAPSHOT (C:\Project1\DBAccess\pom.xml) has 1 error
[ERROR]Invalid packaging for parent POM com.project1.logic:LOGIC:1.0-SNAPSHOT (C:\Project1\pom.xml), must be "pom" but is "ear" @ com.project1.logic:LOGIC:1.0-SNAPSHOT, C:\Project1\pom.xml, line 6, column 13

This is how part of my parent pom.xml looks

<modelVersion>4.0.0</modelVersion>
<groupId>com.project1.logic</groupId>
<artifactId>LOGICBACKEND</artifactId>
<packaging>ear</packaging>
<version>1.0-SNAPSHOT</version> 

This is how child pom.xml looks

<groupId>com.project1.logic</groupId>
<artifactId>DBAccess</artifactId>
<packaging>ejb</packaging>
<name>DBAccess</name>
<version>1.0-SNAPSHOT</version>

<parent>
    <groupId>com.project1.logic</groupId>
    <artifactId>DBAccess</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>

Could anybody help me here to understand what is going wrong here.

Thanks in advance for any help


Solution

  • This simple setup is a good start.

    .
    ├── pom.xml
    ├── services
    |   ├── pom.xml
    |   └── src
    |       └── main
    |           └── java
    |               └── com
    |                   └── stackoverflow
    |                       └── MyEjbService.java
    └── application
        └── pom.xml
    

    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>
    
        <groupId>com.stackoverflow.Q13330930</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>pom</packaging>
    
        <name>${project.artifactId}-${project.version}</name>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <modules>
            <module>services</module>
            <module>application</module>
        </modules>
    
        <dependencies>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>com.stackoverflow.Q13330930</groupId>
                    <artifactId>services</artifactId>
                    <version>${project.version}</version>
                    <type>ejb</type>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-ejb-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <ejbVersion>3.1</ejbVersion>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    services/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>
            <groupId>com.stackoverflow.Q13330930</groupId>
            <artifactId>parent</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <groupId>com.stackoverflow.Q13330930</groupId>
        <artifactId>services</artifactId>
        <packaging>ejb</packaging>
    
        <name>${project.artifactId}-${project.version}</name>
    
    </project>
    

    application/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>
            <groupId>com.stackoverflow.Q13330930</groupId>
            <artifactId>parent</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <groupId>com.stackoverflow.Q13330930</groupId>
        <artifactId>application</artifactId>
        <packaging>ear</packaging>
    
        <name>${project.artifactId}-${project.version}</name>
    
        <dependencies>
            <dependency>
                <groupId>com.stackoverflow.Q13330930</groupId>
                <artifactId>services</artifactId>
                <type>ejb</type>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>2.7</version>
                    <configuration>
                        <defaultLibBundleDir>lib</defaultLibBundleDir>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>