Maven không thể giải quyết phụ thuộc, hiện vật không thể được giải quyết


132

Đây được cho là một dự án làm việc từ bạn tôi. Anh ấy đã trình diễn dự án ngay trước mặt tôi, và sau đó tôi đã sao chép dự án, nhập nó dưới dạng một dự án maven hiện có (tôi đang sử dụng m2eclipseplugin).

Và sau đó, lỗi này xảy ra. Lỗi này có thể được sao chép mỗi khi tôi cố gắng xây dựng một cái gì đó bằng maven.

Thực hiện phụ thuộc mvn: cây, phụ thuộc: danh sách hoặc gói xây dựng thông thường, sẽ dẫn đến cùng một lỗi.

Lỗi khi chạy bản dựng 'gói' từ nhật thực là:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Jackpot Portal Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet:jar:2.5.0 is missing, no dependency information available
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0 is missing, no dependency information available
[WARNING] The POM for javax.transaction:com.springsource.javax.transaction:jar:1.1.0 is missing, no dependency information available
[WARNING] The POM for org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.963s
[INFO] Finished at: Tue Jan 11 01:55:41 WIT 2011
[INFO] Final Memory: 2M/56M
[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal on project jackpot: Could not resolve dependencies 
for project com.jeteo:jackpot:war:1.0-SNAPSHOT: The following artifacts could 
not be resolved: javax.servlet:com.springsource.javax.servlet:jar:2.5.0,
javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0, 
javax.transaction:com.springsource.javax.transaction:jar:1.1.0, 
org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6: Failure to find 
javax.servlet:com.springsource.javax.servlet:jar:2.5.0 in 
http://repository.springsource.com/maven/bundles/release was cached in the 
local repository, resolution will not be reattempted until the update 
interval of com.springsource.repository.bundles.release has elapsed or 
updates are forced -> [Help 1]

[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

Và đây là nội dung của 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jeteo</groupId>
    <artifactId>jackpot</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Jackpot Portal Webapp</name>
    <url>http://www.jeteo.com</url>
    <properties>
        <java-version>1.6</java-version>
        <org.springframework-version>3.0.3.RELEASE</org.springframework-version>
        <org.hibernate-version>3.6.0.Final</org.hibernate-version>
        <org.aspectj-version>1.6.9</org.aspectj-version>
        <org.slf4j-version>1.5.10</org.slf4j-version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.sf.jt400</groupId>
            <artifactId>jt400</artifactId>
            <version>6.6</version>
            <scope>compile</scope>
        </dependency>

        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${org.hibernate-version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${org.hibernate-version}</version>
            <scope>compile</scope>
        </dependency>

        <!-- AspectJ -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>com.springsource.javax.servlet</artifactId>
            <version>2.5.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>com.springsource.javax.servlet.jsp.jstl</artifactId>
            <version>1.2.0</version>
            <scope>provided</scope>
        </dependency>
        <!--
        <dependency>
         <groupId>javax.persistence</groupId>
         <artifactId>com.springsource.javax.persistence</artifactId>
         <version>1.0.0</version>
         <scope>compile</scope>
        </dependency>
        -->
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>com.springsource.javax.transaction</artifactId>
            <version>1.1.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>com.springsource.slf4j.log4j</artifactId>
            <version>1.5.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.11</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>

    </dependencies>
    <repositories>
        <!-- Spring releases -->
        <repository>
            <id>com.springsource.repository.bundles.release</id>
            <name>Spring Maven Repository Repository</name>
            <url>http://repository.springsource.com/maven/bundles/release</url>
        </repository>
        <!-- For hibernate 3.6 support -->
        <repository>
            <id>jboss</id>
            <url>https://repository.jboss.org/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <build>
        <finalName>jackpot</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tomcat-maven-plugin</artifactId>
                <version>1.1</version>
                <configuration>
                    <url>http://localhost:8080/manager</url>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Tôi đã thử tải xuống phiên bản mới nhất của maven, và đưa nó vào trong nhật thực nhật thực, nhưng vẫn cùng một vấn đề. Thông báo lỗi tương tự xảy ra ngay cả khi tôi chạy nó trong dòng lệnh shell (bên ngoài nhật thực).

Tôi đang thiếu gì?


xem đường dẫn của bạn trong biến hệ thống. Trong trường hợp của tôi, đường dẫn cho maven 3 đã đúng với biến người dùng nhưng sau khi thay đổi đường dẫn thành maven 2 trong biến hệ thống, nó vẫn hoạt động tốt. Không biết tại sao
aastha

Câu trả lời:


91

Có vẻ như bạn đang thiếu một số repos Maven. Hỏi về bạn bè của .m2/settings.xmlbạn và có thể bạn sẽ muốn cập nhật POM để bao gồm các kho lưu trữ ở đó.

--edit: sau một số thông tin nhanh, hãy thử thêm phần này vào POM của bạn:

<repository>
    <id>com.springsource.repository.bundles.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
    <url>http://repository.springsource.com/maven/bundles/release</url>
</repository>
<repository>
    <id>com.springsource.repository.bundles.external</id>
    <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
    <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>

5
Cảm ơn bạn ! Bạn tôi đã đề cập rằng nó hoạt động trong máy tính xách tay của mình vì anh ta đã có các phụ thuộc được lưu trong bộ nhớ cache trong .m2 / và maven không cố tải xuống chúng nữa. Và anh ấy đã chia sẻ các mục lưu trữ, một số giống như phát hiện của bạn, và bây giờ nó hoạt động tốt .. Cảm ơn bạn đã dành thời gian! Và nếu tôi có thể biết, bạn sử dụng từ khóa nào để tìm ra kho lưu trữ nào để sử dụng? Tôi đã cố gắng googling ngày hôm qua, nhưng cuối cùng tôi đã đau khổ. haha
bertie

6
Tôi biết đó là một vấn đề về kho lưu trữ vì thông báo cảnh báo "POM cho xxx bị thiếu". Vì vậy, tôi chỉ tìm kiếm trên "Springsource maven" và tìm ra Câu hỏi thường gặp về dự án Springsource, và mục nhập của nó để thiết lập nó hoạt động với Maven.
wmorrell

Lỗi tạo tác đầu tiên của anh ta là một jar com.springsource.javax.servlet được cung cấp. Nếu nó được cung cấp, tại sao nó lại có liên quan đến cài đặt?
Philip Rego

@PhilipRego .m2/settings.xmlcó thể chỉ định danh sách kho lưu trữ bên ngoài danh sách tiêu chuẩn tại repo.maven.apache.org. Trong trường hợp này, các JAR đến từ kho lưu trữ SpringSource và không có trên Maven Central. Tôi đã giả định rằng người bạn đó có các repos SpringSource được liệt kê ở địa phương .m2/settings.xml, không gây ra lỗi tra cứu vì các tạo phẩm sẽ được tìm thấy trong các repos maven thay thế. Thay vào đó, các JAR được lưu trữ và không có tra cứu nào xảy ra cả.
wmorrell

1
@PhilipRego Những phụ thuộc này không được đánh dấu là được cung cấp. Ngay cả khi phụ thuộc được cung cấp, các định nghĩa giao diện được yêu cầu để biên dịch mã; điều đó có nghĩa là bạn phải có các tệp JAR xác định các giao diện được sử dụng. Tất cả điều đó có nghĩa cho một phụ thuộc được cung cấp là các JAR không được đóng gói với mã của bạn.
wmorrell

15

Maven giữ các tệp của bạn trên bộ nhớ cache và không thử lại để tải xuống. Bạn chỉ có thể tự mình 'giúp đỡ' anh ấy bằng cách xóa thư mục .m2, và sau đó bạn của chúng tôi sẽ tải xuống mọi thứ qua các phụ kiện cũ.


7

Là một nguồn thay thế cho cùng một vấn đề, câu trả lời này trích dẫn sử dụng Maven 3 so với Maven 2 là nguyên nhân tiềm ẩn của vấn đề này. Gần như tôi có thể biết, điều này là do những thay đổi trong độ phân giải kho lưu trữ cục bộ đã được thay đổi trong Maven 3. Đặt nó ở đây trong trường hợp bất kỳ ai khác googles cho nó và đạt được câu trả lời này (như tôi đã làm).


7

Đối artifactIdvới tất cả các phụ thuộc không tải xuống được là không chính xác - vì một số lý do chúng bị tiền tố com.springsource. Cắt / dán vấn đề?

Bạn có thể thử thay thế chúng như sau.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>jta</artifactId>
    <version>1.1.0</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

Bạn cũng có thể muốn thêm kho lưu trữ trung tâm maven cho các tạo phẩm này trong trường hợp chúng không có sẵn trong kho được chỉ định.

<repository>
    <id>maven2</id>
    <url>http://repo1.maven.org/maven2</url>
</repository>

Tôi đã thử điều đó, và vẫn còn sai lầm? Đây là đầu ra một phần từ nhật thực sau khi thực hiện tác vụ gói: Không thể thực hiện mục tiêu trên jackpot dự án: Không thể giải quyết các phụ thuộc cho dự án com.jeteo: jackpot: war: 1.0-SNAPSHOT: Không thể giải quyết các tạo phẩm sau: javax.servlet: servlet-api: jar: 2.5.0, javax.servlet: jstl: jar: 1.2.0, javax.transaction: jta: jar: 1.1.0: Không tìm thấy javax.servlet: servlet-api: jar: 2.5.0 trong repository.springsource.com/maven/bundles/release đã được lưu trong kho lưu trữ cục bộ, độ phân giải sẽ không được đánh dấu lại cho đến khi khoảng thời gian cập nhật của <cutted> ....
bertie

@Albert Kam. Câu trả lời được cập nhật để bao gồm tham chiếu đến kho lưu trữ trung tâm của maven cho các hiện vật bị thiếu
Raghuram

tiền tố com.springsource có nghĩa là các tạo phẩm đang đến từ kho lưu trữ của doanh nghiệp mùa xuân
eis

5

Tải xuống jar theo cách thủ công và sau đó thực hiện lệnh từ thư mục lưu tệp jar:

mvn install:install-file -Dfile=*jar_file_name*.jar-DgroupId=*group_id* -DartifactId=*artifact_id* -Dversion=*version_no* -Dpackaging=jar

Các jar file, jar_file_name, group_id, artifact_idversion_nocó sẵn từ trang kho maven.


4

Tôi đã gặp vấn đề tương tự và tôi đã khắc phục bằng cách thêm các repos dưới đây vào tệp pom.xml của mình:

<repository>
    <id>org.springframework.maven.release</id>
    <name>Spring Maven Release Repository</name>
    <url>http://repo.springsource.org/libs-release-local</url>
    <releases><enabled>true</enabled></releases>
    <snapshots><enabled>false</enabled></snapshots>
</repository>
<!-- For testing against latest Spring snapshots -->
<repository>
    <id>org.springframework.maven.snapshot</id>
    <name>Spring Maven Snapshot Repository</name>
    <url>http://repo.springsource.org/libs-snapshot-local</url>
    <releases><enabled>false</enabled></releases>
    <snapshots><enabled>true</enabled></snapshots>
</repository>
<!-- For developing against latest Spring milestones -->
<repository>
    <id>org.springframework.maven.milestone</id>
    <name>Spring Maven Milestone Repository</name>
    <url>http://repo.springsource.org/libs-milestone-local</url>
    <snapshots><enabled>false</enabled></snapshots>
</repository>

4
mvn clean install -U

Giải quyết vấn đề của tôi. Vì các repos đã được lưu trữ, tôi cần buộc nó phải có phiên bản mới nhất.


1

Tôi đã nhận được một thông báo tương tự và vấn đề của tôi là một số tùy chọn proxy trong tệp settings.xml của tôi. Vì vậy, tôi đã vô hiệu hóa chúng và mọi thứ hoạt động tốt.


1

Loại vấn đề này được gây ra bởi hai lý do:

  1. chính tả của một phụ thuộc là sai
  2. cấu hình của cài đặt mvn (ví dụ: ~ / .m2 / settings.xml) là sai

Nếu hầu hết các phụ thuộc có thể được tải xuống, thì lý do 1 có thể là lỗi có khả năng nhất. Ngược lại, nếu hầu hết các phụ thuộc có vấn đề, thì bạn nên xem cài đặt .

Vâng, tôi đã cố gắng khắc phục vấn đề của mình cả buổi chiều, và cuối cùng tôi đã nhận được nó. Vấn đề của tôi xảy ra trong tệp settings.xml, không phải là lỗi chính tả hoặc sai chính tả của tệp cài đặt , mà là mất activeProfiles .


0

Tôi đã có vấn đề này. Trong trường hợp của tôi, đó là do IntelliJ Idea gây rối với một số tệp pom.xml (có vẻ như rất thích làm!). Tôi chỉ trở lại bản gốc và mọi thứ hoạt động trở lại!


0

Tôi cũng gặp vấn đề này, hóa ra là do NetBeans thêm một cái gì đó vào tệp pom.xml của tôi. Kiểm tra hai lần không có gì được thêm vào kể từ khi triển khai thành công trước đó.


0

Dự án EAR của tôi có 2 mô-đun * .ear và * .war và tôi đã gặp lỗi phụ thuộc này vào *.wardự án khi thử mvn eclipse:eclipse. Đã giải quyết nó bằng cách sửa lỗi mã hóa utf-8 trong *.wardự án. mvn -Xhoặc -ecác tùy chọn không giúp đỡ ở đây.


0

Hóa ra nó đã xảy ra vì tường lửa trên máy tính của tôi. Tắt nó làm việc cho tôi.


1
Trong khi tắt tường lửa trên máy tính của bạn có thể hoạt động, tùy thuộc vào thiết lập mạng của bạn, tôi khuyên bạn nên tìm kiếm một giải pháp an toàn hơn, ví dụ như bằng cách thêm một ngoại lệ cho quy trình maven hoặc trung tâm maven ... Nghe có vẻ như thiết lập tường lửa bị cấu hình sai / rất nghiêm ngặt tôi mặc dù
Ma Kết

@Capricorn đúng, đây không phải là tốt nhất nhưng đối với tôi, tôi đã thử tất cả các giải pháp được đề xuất và nó chỉ hoạt động tốt trên cái này. Nếu bạn có bất kỳ giải pháp tốt hơn, xin vui lòng cho tôi biết, cảm ơn bạn !!! đã chỉnh sửa: bạn đã đề cập "thêm một ngoại lệ cho quy trình maven hoặc trung tâm maven", tôi không thực sự hiểu được, bạn có thể chỉ định những điều này ...
Đức Thành

0

Đã đi qua vấn đề như vậy. Nguyên nhân gốc là thư mục .m2. Bạn phải chắc chắn rằng bất cứ điều gì bạn đang cố gắng truy cập đều có trong thư mục .m2 của bạn (đây là repo cục bộ của bạn). Nếu công cụ ở đó thì bạn tốt. Điều này thường có trong thư mục người dùng trên hệ thống của bạn (có thể là mac / linux hoặc thậm chí là windows)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.