2011-10-17 10 views
7

Tôi có sự phụ thuộc sau đây trong pom.xml của tôiTại sao Maven đang tìm tệp .pom khi .jar hiện diện trong kho lưu trữ?

<dependency> 
    <groupId>aGroup</groupId> 
    <artifactId>anArtifact</artifactId> 
    <version>aVersion</version> 
</dependency> 

Tôi cũng có những tập tin anArtifact-aVersion.jar trong ~/.m2/repository/aGroup/anArtifact/aVersion thư mục.

Khi tôi bắt đầu xây dựng dự án, maven tìm kiếm một tập tin .pom thay vì sử dụng các tập tin .jar và cố gắng để tải về sau

http://repo1.maven.org/maven2/aGroup/anArtifact/aVersion/anArtifact-aVersion.pom

Làm thế nào tôi có thể cấu hình maven sử dụng .jar tập tin hiện hành?

+0

Bạn đã đặt cái bình đó vào kho lưu trữ cục bộ của mình (~/.m2/repository) chưa? Hay Maven đã tải xuống? – Daniel

Trả lời

7

Mỗi jar cần phải có một tập tin pom mô tả nó, bạn chỉ có thể thêm một cái gì đó đơn giản như thế này:

<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>aGroup</groupId> 
    <artifactId>aArtifactId</artifactId> 
    <version>aVersion</version> 
    <packaging>jar</packaging> 
    <name>a Name</name> 
</project> 
+1

Điều đó có nghĩa là trong kho lưu trữ phải có loại tệp ".pom" bên cạnh jar trong khi đã có tệp pom.xml và plugin.xml bên trong tệp jar? Nó có nên là một bản sao của một trong số đó không? – Dima

+1

có pom cần phải có và có tôi có thể chỉ là một bản sao của một pom bao gồm. Các kho lưu trữ cục bộ như artifactory thực sự chỉ trích xuất một pom đi kèm nếu bạn tải lên một cái lọ. – HefferWolf

3

Nó đang tìm kiếm pom để, trong số những thứ khác, giải quyết các phụ thuộc transitive.

2

Chạy xây dựng của bạn bằng cách sử dụng "-o" chuyển sang sử dụng Maven trong chế độ ngoại tuyến. Trong chế độ ngoại tuyến, Maven sẽ không kiểm tra các bản cập nhật của các phụ thuộc chụp nhanh trong các kho lưu trữ từ xa.

4

cách tốt nhất để cài đặt một vật vào kho địa phương mà không được xây dựng bởi Maven ist sử dụng

mvn install:install-file ...

có một cái nhìn tại các mục tiêu install:install.

2

POM được cài đặt vào nexus sẽ mô tả bình. Được sử dụng để kéo các phụ thuộc được liên kết với jar tương ứng. Khi chúng tôi thêm bình làm phụ thuộc vào dự án của chúng tôi, tất cả các lọ cần thiết cho bình bao gồm sẽ được xác định thông qua pom tương ứng.