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

匿名 (未验证) 提交于 2019-12-03 02:56:01

问题:

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

回答1:

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> 


回答2:

You are trying to give the parent pom two functions - that is serving as a parent pom (packaging pom) and being the wrapper ear (packaging ear) - at the same time. To solve your issue you should create another maven module under your parent pom that has packaging ear and uses the maven-ear-plugin to define the output.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!