2012-11-11 28 views
10

Ai có thể đề xuất cho tôi giải pháp có ngoại lệ sau. Tôi sẽ tạo một dự án đa mô-đun.Đóng gói không hợp lệ cho pom.xml gốc, phải là "pom" nhưng là "tai"

Tên dự án Chánh là LOGICBACKEND tên dự án con là DBAccess

tôi cần phải có tập tin tai của LOGICBACKEND mà nên chứa DBAccess prjoects jar tập tin.

Tôi nhận được ngoại lệ sau khi tôi chạy 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 

Đây là cách một phần của pom.xml của bố mẹ tôi trông

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

Đây là cách pom.xml con trông

<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> 

Ai có thể giúp tôi ở đây để hiểu những gì đang xảy ra sai ở đây.

Cảm ơn trước sự giúp đỡ nào

+0

Các thông báo lỗi là khá rõ ràng. Cha mẹ phải có bao bì pom. – maba

+0

nhưng tôi muốn đóng gói là tai, nên có thể – KItis

+0

Có thể, nhưng không phải là cha mẹ. – maba

Trả lời

12

Thiết lập đơn giản này là một khởi đầu tốt.

 
. 
├── 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> 
+0

Cảm ơn bạn đã trả lời, tôi có thể biết tại sao bạn đã đặt maven-ear-plugin cho pom.xml phụ huynh – KItis

+0

Bạn có thể đặt nó vào tai dự án là tốt. Trong trường hợp này nó không thực sự quan trọng. – maba

7

Bạn đang cố gắng để cung cấp cho phụ huynh pom hai chức năng - đó là phục vụ như là một pom mẹ (đóng gói pom) và là tai wrapper (đóng gói ear) - cùng một lúc . Để giải quyết vấn đề của bạn, bạn nên tạo một mô-đun maven khác trong pom cha mẹ của bạn có bao bì ear và sử dụng trình cắm maven-ear để xác định đầu ra.