Ví dụ: Tôi có 2 dự án, "dự án chung" và "dự án ứng dụng".Dự án ứng dụng phụ thuộc vào API được cung cấp bởi dự án chung. Ngoài ra còn có các lọ bên thứ 3 (ví dụ ổi) được cả hai dự án sử dụng.
tôi sẽ tạo ra 3 dự án maven: a parent
tập hợp mô-đun, một module common-project
và một application-project
mô-đun tùy thuộc vào common-project
và tuyên bố ổi như phụ thuộc vào parent
mô-đun (để dự án con sẽ thừa hưởng nó). Một cái gì đó như thế này:
$ tree Q3337426
Q3337426
├── application-project
│ ├── pom.xml
│ └── src
│ ├── main
│ └── ...
│ └── test
│ └── ...
├── common-project
│ ├── pom.xml
│ └── src
│ ├── main
│ └── ...
│ └── test
│ └── ...
└── pom.xml
Trường hợp pom.xml mẹ trông như thế này:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow.Q3337426</groupId>
<artifactId>Q3337426</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>Q3337426 - Root</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>r05</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<modules>
<module>common-project</module>
<module>application-project</module>
</modules>
</project>
Các pom.xml cho phổ biến dự án:
<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>
<artifactId>Q3337426</artifactId>
<groupId>com.stackoverflow.Q3337426</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>common-project</artifactId>
<name>Q3337426 - Common Project</name>
<dependencies/>
</project>
Các pom.xml cho dự án ứng dụng:
<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>
<artifactId>Q3337426</artifactId>
<groupId>com.stackoverflow.Q3337426</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>application-project</artifactId>
<name>Q3337426 - Application Project</name>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>common-project</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
Đây là cách Maven để tổ chức một dự án như vậy và sẽ cho phép kích hoạt một lò phản ứng được xây dựng từ dự án gốc để xây dựng mọi thứ.
(...) Cả hai dự án đều đang được phát triển tích cực, vì vậy tôi không muốn phải xây dựng một lọ chung dự án trước, sau đó "cài đặt" đó vào kho lưu trữ cục bộ của tôi trước khi tôi có thể sử dụng các tính năng trong ứng dụng dự án.
Plugin m2eclipse có thể Giải quyết phụ thuộc từ dự án Không gian làm việc (đây thực sự là hành vi mặc định). Vì vậy, nếu bạn nhập cả application-project
và common-project
, cấu hình cũ sẽ được định cấu hình phụ thuộc vào các nguồn của common-project
(thay vì tùy thuộc vào bình). Các thay đổi được thực hiện cho common-project
sẽ hiển thị ngay lập tức khi sử dụng thiết lập này.
Điều này sẽ giải quyết mối quan tâm của bạn bên trong IDE. Bên ngoài IDE, chạy một lò phản ứng được xây dựng trên dự án hàng đầu.
Cảm ơn - Tôi đoán tôi chỉ nên đi với việc tạo dự án chung một tạo phẩm được chia sẻ và xem cách hoạt động của nó. Dường như tôi vẫn có thể thiết lập các phụ thuộc dự án với nhật thực để tái cấu trúc vẫn có thể được áp dụng trên nhiều dự án. – MavenN00b
Tôi hoàn toàn chống lại việc sử dụng phụ thuộc phạm vi 'hệ thống', đây là một thực hành rất xấu mà không nên khuyến khích, mọi người chỉ lạm dụng nó. –