repo grup nexus publik tidak menyediakan info versi dari repo proxy snapshot

Untuk waktu yang lama, saya memiliki Jenkins build yang mengeksekusi Sonar sebagai tindakan pasca-build. Ini telah berjalan dengan baik selama bertahun-tahun, lalu minggu lalu mulai gagal dengan ini:

Downloading: http://myNexusServer/nexus/content/groups/public/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/sonar-maven-plugin-2.2-SNAPSHOT.pom
Downloading: http://myNexusServer/nexus/content/groups/public/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/sonar-maven-plugin-2.2-SNAPSHOT.jar
[INFO] Unable to find resource 'org.codehaus.mojo:sonar-maven-plugin:maven-plugin:2.2-SNAPSHOT' in repository central (http://central)
[INFO] Cannot find mojo descriptor for: 'sonar:sonar' - Treating as non-aggregator.
[INFO] ------------------------------------------------------------------------
[INFO] Building portal
[INFO]    task-segment: [sonar:sonar]
[INFO] ------------------------------------------------------------------------
Downloading: http://myNexusServer/nexus/content/groups/public/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/sonar-maven-plugin-2.2-SNAPSHOT.jar
[INFO] Unable to find resource 'org.codehaus.mojo:sonar-maven-plugin:maven-plugin:2.2-SNAPSHOT' in repository central (http://central)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] A required plugin was not found: Plugin could not be found - check that the goal name is correct: Unable to download the artifact from any repository
...

Saya memiliki pengaturan yang menurut saya cukup standar, dengan repo publik di Nexus kami yang membagikan semua konten repo lain di Nexus, seperti repo OOTB Codehaus Snapshots. (Ya, saya telah memeriksa empat kali lipat bahwa repo Codehaus Snapshots ada di Repositori Grup yang Dipesan dari repo publik.)

Saya tidak sepenuhnya memahami cara kerja snapshot, tetapi saya mendapat kesan bahwa file maven-metadata.xml memberi tahu klien versi snapshot mana yang tersedia untuk diunduh.

Jika saya menggunakan browser dan langsung membuka repo codehaus-snapshots, saya mendapatkan maven-metadata.xml dengan info versi:

http://myNexusServer/nexus/service/local/repositories/codehaus-snapshots/content/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/maven-metadata.xml

<metadata modelVersion="1.1.0">
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.2-SNAPSHOT</version>
    <versioning>
        <snapshot>
            <timestamp>20131108.154049</timestamp>
            <buildNumber>1</buildNumber>
        </snapshot>
        <lastUpdated>20131108154049</lastUpdated>
        <snapshotVersions>
            <snapshotVersion>
                <extension>jar</extension>
                <value>2.2-20131108.154049-1</value>
                <updated>20131108154049</updated>
            </snapshotVersion>
            <snapshotVersion>
                <extension>pom</extension>
                <value>2.2-20131108.154049-1</value>
                <updated>20131108154049</updated>
            </snapshotVersion>
        </snapshotVersions>
    </versioning>
</metadata>

Jika saya mencoba memuatnya dari repo publik, tidak ditemukan:

http://myNexusServer/nexus/content/groups/public/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/maven-metadata.xml
The server has not found anything matching the request URI

Jika saya menambahkan ?deskripsikan permintaan ke repo publik, saya mendapatkan:

{ "data" : { "processingTimeMillis" : 108,
    "request" : { "requestContext" : [ "request.received.timestamp=1384808412437",
        "request.address=my.ip.addy",
        "request.remoteOnly=false",
        "request.url=http://myNexusServer/nexus/content/groups/public/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/maven-metadata.xml?describe",
        "request.localOnly=false",
        "request.appRootUrl=http://myNexusServer/nexus"
        ],
        "requestPath" : "/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/maven-metadata.xml",
        "requestUrl" : "http://myNexusServer/nexus/content/groups/public/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/maven-metadata.xml?describe"
    },
    "requestUrl" : "http://myNexusServer/nexus/content/groups/public/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT/maven-metadata.xml?describe",
    "response" : { "appliedMappings" : [ "public repository applied []" ],
        "processedRepositoriesList" : [ "public",
            "releases",
            "snapshots",
            "thirdparty",
            "central",
            "java.net-m2",
            "java.net-m1-m2",
            "google",
            "apache-snapshots",
            "codehaus-snapshots",
            "sonatype.public",
            "com.springsource.repository.bundles.release",
            "sonar.repo",
            "com.springsource.repository.bundles.external"
        ],
        "responseType" : "NOT_FOUND"
    }
}
}

Saat saya mencoba membuat sonar:sonar, saya mendapatkan maven-metadata-central.xml di .m2/repository/org/codehaus/mojo/sonar-maven-plugin/2.2-SNAPSHOT, tetapi info versinya hilang:

<metadata>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.2-SNAPSHOT</version>
</metadata>

Jadi menurut saya masalahnya adalah repo publik tidak memberikan informasi versi maven-metadata.xml kepada klien, sehingga klien mencoba mengunduhnya tanpa informasi versi, dan gagal ketika tidak dapat menemukannya. Apakah saya benar tentang hal itu?

Apa yang perlu saya ubah pada konfigurasi Nexus (atau mungkin Jenkins) saya agar ini berfungsi kembali?


person user3006472    schedule 18.11.2013    source sumber


Jawaban (3)


sepertinya groupidnya diubah menjadi org.codehaus.sonar

lihat http://snapshots.repository.codehaus.org/org/codehaus/sonar/sonar-maven-plugin/2.2-SNAPSHOT/

person Peter Schuetze    schedule 19.11.2013

Meskipun saya masih tidak memahami beberapa masalah Nexus, dll, build saya sudah berfungsi kembali dan saya tidak ingin membiarkannya terbuka.

Awalnya saya pikir saya melewatkan bagian output ini:

[INFO] Searching repository for plugin with prefix: 'sonar'.
[INFO] org.apache.maven.plugins: checking for updates from central
[INFO] org.codehaus.mojo: checking for updates from central
[INFO] artifact org.codehaus.mojo:sonar-maven-plugin: checking for updates from central
[INFO] Ignoring available plugin update: 2.2 as it requires Maven version 3.0

Hal ini membuat saya bertanya-tanya apa yang menentukan versi sonar yang akan digunakan. Saya mencari di semua POM saya dan tidak ada yang benar-benar mencantumkan plugin sonar. Jadi saya menambahkan ini ke bagian plugin dari pom.xml induk:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>1.0</version>
</plugin>

...dan pembangunan mulai berfungsi kembali. Saya tidak tahu dari mana maven mendapatkan ketergantungan sonar saat ini berfungsi sebelumnya (masuk akal bagi saya jika tidak pernah berhasil), tapi saya rasa saya harus hidup dengan misterinya.

person user3006472    schedule 10.12.2013

Apa yang saya ubah dalam konfigurasi Hudson saya untuk mengatasi masalah ini adalah Version of sonar-maven-plugin di bagian Sonar installations. Saya mencoba dengan versi 2.0 dan 2.6 dan keduanya berfungsi jika Anda menggunakan Maven 3.0.

Plugin Sonar untuk Hudson tampaknya menggunakan 2.2-SNAPSHOT yang tersedia secara default di sini. Untuk menambahkan artefak saya mencoba:

  1. Tambahkan nexus.codehaus.org sebagai repo proxy di Nexus saya
  2. Unggah artefak secara manual
  3. Unggah artefak secara manual ke Nexus kedua dengan versi berbeda karena versi pertama menyebabkan kerusakan metadata

Dalam semua kasus, saya tidak dapat memperoleh artefak 2.2-SNAPSHOT untuk analisis Sonar. Ini malah berfungsi untuk versi lainnya.

person crash    schedule 29.07.2015