Gradle berganti ke mvn instal


163

Saya punya 2 proyek berbeda yang dibangun di mvn. Saya mencoba mengganti ke Gradle.

proyek 1 adalah SDK dan proyek 2 menggunakan SDK (contoh)

Pada masa pakar itu menciptakan artefak menggunakan mvn install yang menambahkan seluruh proyek ke dalam repositori lokal.

Saya suka bekerja di kelas seperti itu. Saya suka project 1 build.gradle perlu mempostingnya sebagai repositori lokal gradle dan kemudian contoh proyek perlu menggunakannya.

Dalam maven kita melakukan mvn instal yang menambahkan artefak proyek ke dalam folder .m2 tetapi bagaimana melakukannya secara bertahap sehingga apa yang dapat saya tambahkan artefak proyek ke dalam repositori lokal.

Bagaimana saya bisa melakukannya?


Jawaban:


170

sdk/build.gradle:

apply plugin: "maven"

group = "foo"
version = "1.0"

example/build.gradle:

repositories {
    mavenLocal()
}

dependencies {
    compile "foo:sdk:1.0"
}

$sdk> gradle install

$example> gradle build

1
terapkan plugin: "maven" dan $ sdk> install gradle ini akan menginstal sdk ke .m2 kan? Dan mavenLocal () juga mendapat info dari .m2 dan .gradle?
Rajmahendra

14
gradle installmenerbitkan ke repo Maven lokal, dan mavenLocal()pastikan untuk mencari dependensi di sana.
Peter Niederwieser

1
Apakah Gradle tidak "berorientasi fase" seperti Maven? TKI, jika saya lakukan gradle publish, bukankah itu juga akan melalui installfase?
Chris F


8

Periksa dokumentasi Gradle pada multi-proyek membangun .

Ini sebuah contoh, dengan beberapa dependensi tambahan. Panggil saja gradle installdi folder root, dan semua akan dibangun dan dimasukkan ke repo lokal Anda.

Struktur folder:

root
+--> build.gradle
+--> settings.gradle
+--> sdk
|    +--> build.gradle
+--> example
     +--> build.gradle

root / build.gradle:

allprojects {
  apply plugin: 'java'
  apply plugin: 'maven'

  group = 'myGroup'
  version = '0.1-SNAPSHOT'
}

root / settings.gradle:

include 'sdk'
include 'example'

root / sdk / build.gradle:

dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}

root / example / build.gradle:

dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}

4
Apakah praktik yang ideal ini? Bagaimana jika dia ingin membuat proyek baru, example2, yang juga bergantung pada SDK? Sekarang dia harus meletakkan 2 proyek yang tidak terkait di bawah proyek root hanya karena mereka berbagi ketergantungan? Anda akan berpikir bahwa seluruh pengaturan 'multi-proyek' ini akan menjadi proyek 1 Git juga. Sekali lagi, apakah ini buruk untuk alur kerja perusahaan / multi-pengembang?
Anthony Chuinard

2

Anda perlu menerbitkan perpustakaan Anda sendiri ke repositori lokal Anda. Anda dapat melakukannya dengan cara berikut:

  1. Tambahkan maven-publishplugin:

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. Tambahkan bagian penerbitan ke file build Anda:

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
  3. Lari gradle build publishToMavenLocal

    Temukan detail lebih lanjut dalam dokumentasi .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.