Tôi đang cố gắng thiết lập một dự án Maven nhiều mô-đun và các phần phụ thuộc giữa các mô-đun dường như không được thiết lập chính xác.
Tôi có:
<modules>
<module>commons</module>
<module>storage</module>
</modules>
trong POM mẹ (có pom kiểu đóng gói) và sau đó là các thư mục con commons/
và storage/
định nghĩa các JAR poms có cùng tên.
Lưu trữ phụ thuộc vào Commons.
Trong thư mục chính (chính), tôi chạy mvn dependency:tree
và thấy:
[INFO] Building system
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] domain:system:pom:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:3.8.1:test
[INFO] ------------------------------------------------------------------------
[INFO] Building commons
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
...correct tree...
[INFO] ------------------------------------------------------------------------
[INFO] Building storage
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
Downloading: http://my.repo/artifactory/repo/domain/commons/1.0-SNAPSHOT/commons-1.0-SNAPSHOT.jar
[INFO] Unable to find resource 'domain:commons:jar:1.0-SNAPSHOT' in repository my.repo (http://my.repo/artifactory/repo)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) domain:commons:jar:1.0-SNAPSHOT
Tại sao sự phụ thuộc vào "commons" không thành công, mặc dù lò phản ứng rõ ràng đã nhìn thấy nó vì nó xử lý thành công cây phụ thuộc của nó? Nó chắc chắn không nên vào 'mạng để tìm nó vì nó ở ngay đó ...
Pom để lưu trữ:
<?xml version="1.0" encoding="UTF-8"?>
<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>
<packaging>jar</packaging>
<parent>
<artifactId>system</artifactId>
<groupId>domain</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>domain</groupId>
<artifactId>storage</artifactId>
<name>storage</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- module dependencies -->
<dependency>
<groupId>domain</groupId>
<artifactId>commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- other dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Cảm ơn vì bất kỳ đề xuất!
(Biên tập)
Để làm rõ, những gì tôi đang tìm kiếm ở đây là: Tôi không muốn phải cài đặt mô-đun X để xây dựng mô-đun Y phụ thuộc vào X, vì cả hai đều là mô-đun được tham chiếu từ cùng một POM mẹ. Điều này có ý nghĩa trực quan đối với tôi rằng nếu tôi có hai thứ trong cùng một cây nguồn, tôi không cần phải cài đặt các sản phẩm trung gian để tiếp tục xây dựng. Hy vọng rằng suy nghĩ của tôi có ý nghĩa ở đây ...