2015-10-14 13 views
9

Tôi dường như không thể tìm thấy Maven để tìm mô-đun của anh chị em trong một dự án đa mô-đun.Dự án đa mô-đun Maven không thể tìm thấy mô-đun anh chị em

Tôi đã chạy mvn clean install trong tất cả các mô-đun.

Dưới đây là các thiết lập:

Product 
+-- MagniCompCommon 
+-- Model 

Dự án ModelMagniCompCommon như một sự phụ thuộc. Khi tôi chạy mvn clean compile trong Model, tôi nhận được:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Model 1.0 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The POM for com.magnicomp:MagniCompCommon:jar:1.0 is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.585 s 
[INFO] Finished at: 2015-10-14T10:09:04-07:00 
[INFO] Final Memory: 5M/15M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project Model: Could not resolve dependencies for project com.magnicomp:Model:jar:1.0: Failure to find com.magnicomp:MagniCompCommon:jar:1.0 in http://download.java.net/maven/2/ was cached in the local repository, resolution will not be reattempted until the update interval of Java.Net has elapsed or updates are forced -> [Help 1] 

Như bạn thấy, Maven đang cố gắng tìm MagniCompCommon trong repo java.net (đây là sự xâm nhập kho đầu tiên trong các phụ huynh (Product) pom.xml).

Đây là sản phẩm pom.xml:

<?xml version="1.0"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.magnicomp</groupId> 
    <artifactId>Product</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 


    <modules> 
    <module>MagniCompCommon</module> 
    <module>Model</module> 
    <module>Common</module> 
    <module>Agent</module> 
    <module>Doc</module> 
    </modules> 

... snip ... 

    <repositories> 
     <repository> 
      <id>Java.Net</id> 
      <url>http://download.java.net/maven/2/</url> 
     </repository> 

Đây là MagniCompCommon pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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.magnicomp</groupId> 
     <artifactId>Product</artifactId> 
     <version>1.0</version> 
    </parent> 

    <!-- <groupId>com.magnicomp.common</groupId> --> 
    <artifactId>MagniCompCommon</artifactId> 
    <packaging>jar</packaging> 

Dưới đây là mẫu 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.magnicomp</groupId> 
     <artifactId>Product</artifactId> 
     <version>1.0</version> 
    </parent> 

    <artifactId>Model</artifactId> 
    <packaging>jar</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>com.magnicomp</groupId> 
      <artifactId>MagniCompCommon</artifactId> 
      <version>1.0</version> 
     </dependency> 

    </dependencies> 

</project> 

Trả lời

14

Khi bạn đang xây dựng một dự án Maven đa mô-đun, bạn cần chạy lệnh Maven từ root POM. Điều này có nghĩa là bạn cần phải chạy mvn clean install trên 's pom.xml.

Lỗi bạn đang nhận được dự kiến: bạn chỉ đang xây dựng Model. Trong POM của Model, Maven thấy rằng có sự phụ thuộc vào MagniCompCommon do đó, nó cố tìm kiếm sự phụ thuộc đó. Đầu tiên, nó tìm kiếm trong repo địa phương của bạn: nó không tìm thấy nó ở đó vì bạn không cài đặt MagniCompCommon trước đây. Kết quả là, nó tìm kiếm nó trong kho lưu trữ từ xa được xác định trước (và cũng không tìm thấy nó).

Bạn có thể phá vỡ điều này bằng cách chạy đầu tiên mvn clean install trên POM của MagniCompCommon, sau đó trên Model POM nhưng thực hiện dễ dàng hơn nhiều bằng cách gọi trực tiếp Maven trên POM gốc. Nó sẽ xây dựng chính xác mọi mô-đun theo đúng thứ tự (kể từ Model tùy thuộc vào MagniCompCommon, nó sẽ xây dựng MagniCompCommon trước, rồiModel).

Lưu ý phụ, bạn có thể xóa dòng <packaging>jar</packaging> vì đây là mặc định.

+0

Vâng, đó là vấn đề!Tôi cần nằm trong thư mục "Sản phẩm" của phụ huynh. Một lỗi newbie như vậy! Cảm ơn bạn rất nhiều! –

0

tôi nhận thấy MagniCompCommon pom doesnt chỉ định một phiên bản

<!-- <groupId>com.magnicomp.common</groupId> --> 
<artifactId>MagniCompCommon</artifactId> 
<packaging>jar</packaging> 

Và trong sản phẩm pom, bạn đang tham khảo phiên bản 1,0

<dependency> 
    <groupId>com.magnicomp</groupId> 
    <artifactId>MagniCompCommon</artifactId> 
    <version>1.0</version> 
</dependency> 

Các bạn đã thử xác định phiên bản 1.0 trong MagniCompCommon pom?

+3

Bạn không cần chỉ định phiên bản, mô-đun sẽ được kế thừa từ phiên bản gốc (1.0 trong trường hợp này). – Tunaki

Các vấn đề liên quan