Maven Tidak dapat menyelesaikan dependensi, artefak tidak dapat diselesaikan

132

Ini seharusnya merupakan proyek kerja dari teman saya. Dia mendemonstrasikan proyek tepat di depan saya, dan kemudian saya menyalin proyek, mengimpornya sebagai proyek pakar yang sudah ada (saya menggunakan m2eclipseplugin).

Dan kemudian, kesalahan ini terjadi. Kesalahan ini dapat direproduksi setiap kali saya mencoba membangun sesuatu dengan pakar.

Melakukan dependensi mvn: tree, dependency: list, atau paket build yang biasa, akan menghasilkan kesalahan yang sama.

Kesalahan dari menjalankan build 'package' dari eclipse adalah:

[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

Dan di sini adalah isi dari 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>

Saya sudah mencoba mengunduh versi terbaru dari maven, dan memasukkannya ke dalam eclipse helios, tetapi masih memiliki masalah yang sama. Pesan kesalahan yang sama terjadi bahkan ketika saya menjalankannya di baris perintah shell (di luar gerhana).

Apa yang saya lewatkan?

bertie
sumber
lihat jalur Anda dalam variabel sistem. Dalam kasus saya, jalur untuk pakar 3 benar dalam variabel pengguna tetapi setelah mengubah jalur ke pakar 2 dalam variabel sistem, ia berfungsi dengan baik. Tidak tahu mengapa
aastha

Jawaban:

91

Sepertinya Anda melewatkan beberapa repo Maven. Minta teman Anda .m2/settings.xml, dan Anda mungkin ingin memperbarui POM untuk menyertakan repositori di sana.

--edit: setelah beberapa googling cepat, coba tambahkan ini ke POM Anda:

<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>
wmorrell
sumber
5
Terima kasih ! Teman saya menyebutkan bahwa itu berfungsi di laptop-nya karena dia sudah mendapatkan dependensi yang di-cache di .m2 / dan maven tidak mencoba mengunduhnya lagi. Dan dia membagikan entri repositori, beberapa seperti temuan Anda, dan sekarang berfungsi dengan baik sekarang .. Terima kasih atas waktu Anda! Dan jika saya tahu, kata kunci apa yang Anda gunakan untuk mencari tahu repositori apa yang digunakan? Saya mencoba googling juga kemarin, tetapi akhirnya saya sengsara. haha
bertie
6
Saya tahu itu masalah repositori karena pesan peringatan "POM for xxx is missing". Jadi saya hanya mencari di "springsource maven" dan muncul dengan FAQ proyek springsource, dan entri untuk pengaturannya agar bekerja dengan Maven.
wmorrell
Kesalahan artefak pertamanya adalah stoples com.springsource.javax.servlet yang disediakan. Jika disediakan, mengapa itu ada hubungannya dengan setting.xml?
Philip Rego
@ PhilipRego .m2/settings.xmldapat menentukan daftar repositori di luar yang standar di repo.maven.apache.org. Dalam hal ini, JAR berasal dari repositori SpringSource dan tidak di Maven Central. Saya berasumsi bahwa teman memiliki repo SpringSource terdaftar di lokal .m2/settings.xml, tidak menyebabkan kesalahan pencarian karena artefak akan ditemukan di repo pakar pakar. Sebaliknya, JAR di-cache, dan tidak ada pencarian sama sekali.
wmorrell
1
@ PhilipRego Ketergantungan ini tidak ditandai sebagaimana disediakan. Bahkan jika dependensi disediakan, definisi antarmuka diperlukan untuk mengkompilasi kode; itu berarti Anda harus memiliki file JAR yang mendefinisikan antarmuka yang digunakan. Semua artinya untuk ketergantungan yang disediakan adalah JAR tidak dikemas dengan kode Anda.
wmorrell
15

Maven menyimpan file Anda di cache, dan jangan coba lagi untuk mengunduhnya. Anda cukup dapat 'membantunya' secara manual dengan menghapus direktori .m2, dan kemudian teman kami akan mengunduh semuanya melalui depedensi lama.

Chaibi Alaa
sumber
7

Sebagai sumber alternatif untuk masalah yang sama, jawaban ini mengutip menggunakan Maven 3 versus Maven 2 sebagai penyebab potensial masalah ini. Sedekat yang saya tahu, ini disebabkan oleh perubahan dalam resolusi repositori lokal yang diubah dalam Maven 3. Menempatkan ini di sini kalau-kalau ada orang lain yang googles untuk itu dan mencapai jawaban ini (seperti yang saya lakukan).

shiri
sumber
7

The artifactIduntuk semua dependensi yang gagal download yang benar - untuk beberapa alasan mereka diawali dengan com.springsource. Masalah cut / paste?

Anda dapat mencoba menggantinya sebagai berikut.

<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>

Anda mungkin juga ingin menambahkan repositori pusat maven untuk artefak ini seandainya tidak tersedia di repositori yang ditentukan.

<repository>
    <id>maven2</id>
    <url>http://repo1.maven.org/maven2</url>
</repository>
Raghuram
sumber
Saya mencoba itu, dan masih salah? Inilah output parsial dari gerhana setelah melakukan tugas paket: Gagal menjalankan tujuan pada jackpot proyek: Tidak dapat menyelesaikan dependensi untuk com.jeteo proyek: jackpot: war: 1.0-SNAPSHOT: Artefak berikut tidak dapat diselesaikan: javax.servlet: servlet-api: jar: 2.5.0, javax.servlet: jstl: jar: 1.2.0, javax.transaction: jta: jar: 1.1.0: Gagal menemukan javax.servlet: servlet-api: jar: 2.5.0 di repository.springsource.com/maven/bundles/release di -cache dalam repositori lokal, resolusi tidak akan diulang kembali sampai interval pembaruan <cutted> ....
bertie
@Albert Kam. Jawaban yang diperbarui untuk menyertakan referensi ke repositori pusat maven untuk artefak yang hilang
Raghuram
awalan com.springsource berarti artefak berasal dari repositori perusahaan musim semi
eis
5

Unduh toples secara manual dan kemudian jalankan perintah dari folder tempat toples disimpan:

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

The jar file, jar_file_name, group_id, artifact_iddan version_notersedia dari halaman repositori maven.

Cjo
sumber
4

Saya memiliki masalah yang sama dan saya memperbaikinya dengan menambahkan repo di bawah ini di pom.xml saya:

<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>
Tidak
sumber
4
mvn clean install -U

Memecahkan masalah saya. Karena repo di-cache, saya perlu memaksanya untuk mendapatkan versi terbaru.

Burak Kaan Bilgehan
sumber
1

Saya mendapat pesan serupa dan masalah saya adalah beberapa preferensi proxy di settings.xml saya. Jadi saya menonaktifkannya dan semuanya berfungsi dengan baik.

kdoteu
sumber
1

Masalah seperti ini disebabkan oleh dua alasan:

  1. mantra ketergantungan salah
  2. konfigurasi pengaturan mvn (mis. ~ / .m2 / settings.xml) salah

Jika sebagian besar dependensi dapat diunduh, maka alasan 1 mungkin merupakan bug yang paling mungkin. Sebaliknya, jika sebagian besar dependensi memiliki masalah, maka Anda harus melihat pada setting.xml .

Yah, saya telah mencoba untuk memperbaiki masalah saya sepanjang sore, dan akhirnya saya mendapatkannya. Masalah saya terjadi pada settings.xml, bukan ejaan settings.xml yang hilang atau salah , tetapi hilangnya activeProfiles .

Akan
sumber
0

Saya punya masalah ini. Dalam kasus saya itu disebabkan oleh IntelliJ Idea yang bermain-main dengan beberapa file pom.xml (yang sepertinya senang dilakukan!). Saya baru saja kembali ke salinan aslinya dan semuanya kembali berfungsi!

JonnyRaa
sumber
0

Saya punya masalah ini juga, ternyata itu karena NetBeans menambahkan sesuatu ke file pom.xml saya. Periksa tidak ada yang ditambahkan sejak penerapan sukses sebelumnya.

Eduardo Dennis
sumber
0

Proyek EAR saya memiliki 2 modul * .ear dan * .war dan saya mengalami kesalahan ketergantungan pada *.warproyek saat mencoba mvn eclipse:eclipse. Mengatasinya dengan memperbaiki masalah pengkodean utf-8 dalam *.warproyek. mvn -Xatau -eopsi tidak membantu di sini.

Barun
sumber
0

Ternyata itu terjadi karena firewall di komputer saya. Mematikannya bekerja untuk saya.

Duc Thanh
sumber
1
Sementara mematikan firewall di komputer Anda mungkin bekerja, tergantung pada pengaturan jaringan Anda, saya akan merekomendasikan mencari solusi yang lebih aman misalnya dengan menambahkan pengecualian untuk proses pakar atau pakar pusat ... Terdengar seperti pengaturan firewall yang salah dikonfigurasi / sangat ketat untuk saya meskipun
Capricorn
@Capricorn benar, ini bukan yang terbaik tetapi bagi saya saya mencoba semua solusi yang direkomendasikan dan hanya berfungsi dengan baik pada ini. Jika Anda memiliki solusi yang lebih baik, tolong beri tahu saya, terima kasih !!! diedit: Anda menyebutkan "menambahkan pengecualian untuk proses pakar atau pakar pusat", saya tidak benar-benar mendapatkannya, dapatkah Anda menentukan ini ...
Duc Thanh
0

Telah menemukan masalah seperti itu. Penyebab utama adalah folder .m2. Anda harus memastikan bahwa apa pun yang Anda coba akses ada di sana di folder .m2 Anda (ini adalah repo lokal Anda). Jika barang ada di sana maka Anda baik-baik saja. Ini biasanya ada di dalam folder pengguna di sistem Anda (baik itu mac / linux atau bahkan windows)

Akash Verma
sumber