Pertanyaan Transisi AAR dependensi di Maven


Saya sedang membangun aplikasi Android dari proyek Maven yang menggunakan plugin android-maven. Dalam proyek ini saya menggunakan pustaka pengikat data beta baru.

Ini terdapat dalam m2repository lokal dari Android SDK (extras / android / m2repository). Perpustakaan dalam repositori ini dikemas sebagai tipe aar.

Saya dapat menambahkan ketergantungan pada pom saya seperti ini:

    <dependency>
        <groupId>com.android.databinding</groupId>
        <artifactId>library</artifactId>
        <version>1.0-rc1</version>
        <type>aar</type>
    </dependency>

Ini sepertinya berfungsi, tetapi build gagal dengan ini:

Gagal untuk mengeksekusi sasaran pada demo proyek: Tidak dapat menyelesaikan dependensi untuk proyek com.simpligility.android:demo:apk:1.0.0: Gagal menemukan com.android.support:support-v4:jar:21.0.3 pada file: / // Pengguna / eppleton / Java Libraries / android-sdk-macosx / extras / android / m2repository di-cache dalam repositori lokal, resolusi tidak akan di-reattempted sampai interval pembaruan android-local-extras telah berlalu atau pembaruan dipaksa -> [Tolong 1]

Benar bahwa tidak ada dukungan-v4: jar di repositori lokal ini, karena API versi 20 ada dukungan-v4: aar gantinya.

Apakah ada cara untuk membuat maven mencari aar bukannya toples?

Ps: Untuk build lokal saya sendiri, saya memiliki beberapa workarounds (misalnya pengemasan ulang sebagai toples), tetapi saya lebih memilih solusi yang lebih umum, karena saya ingin berbagi konfigurasi dalam pola dasar maven, dan saya tidak ingin mengharuskan pengguna untuk melakukan banyak pekerjaan manual. Sekarang ini adalah solusi terbaik yang saya miliki:

    <dependency>
        <groupId>com.android.support</groupId>
        <artifactId>support-v4</artifactId>
        <version>21.0.3</version>
        <scope>system</scope>
        <systemPath>${android.sdk.path}/extras/android/support/v4/android-support-v4.jar</systemPath>
    </dependency>

Tapi itu tidak benar-benar bagus, ketergantungan transitif diselesaikan sebagai aar akan jauh lebih baik.


4
2017-08-15 08:11


asal


Jawaban:


OK, temukan solusinya. Saya dapat mengecualikan ketergantungan, dan menambahkannya lagi secara langsung sebagai tipe 'aar':

      <dependency>
        <groupId>com.android.support</groupId>
        <artifactId>support-v4</artifactId>
        <version>21.0.3</version>
        <type>aar</type>
    </dependency>

    <dependency>
        <groupId>com.android.databinding</groupId>
        <artifactId>library</artifactId>
        <version>1.0-rc1</version>
        <type>aar</type>
        <exclusions>
            <exclusion>
                <groupId>com.android.support</groupId>
                <artifactId>support-v4</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

5
2017-08-15 08:37