MVN kurulumuna alternatif olarak geçiş yapın


163

MVN üzerinde 2 farklı proje derlemem var. Gradle'ın yerine geçmeye çalışıyorum.

proje 1 SDK ve proje 2 sdk kullanıyor (örnek)

Maven zamanında tüm projeyi yerel depoya ekleyen mvn install kullanarak artefakt oluşturur.

Böyle bir grupta çalışmayı seviyorum. Ben proje 1 build.gradle gradle yerel depo olarak göndermek gerekir ve sonra örnek proje kullanmak gerekir.

Maven içinde biz .m2 klasörüne bir proje artefakt ekler mvn yükleme yapmak ama nasıl yerel depo içine bir proje artefact ekleyebilir ne sırayla nasıl.

Bunu yapabileceğim herhangi bir yol var mı?


Yanıtlar:


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
eklenti uygula: "maven" ve $ sdk> gradle install bu sdk'yi .m2 içine kuracak değil mi? Ve mavenLocal () ayrıca .m2 ve .gradle'dan bilgi alır?
Rajmahendra

14
gradle installyerel Maven deposunda yayınlanır ve mavenLocal()bağımlılıkları aradığından emin olur.
Peter Niederwieser

1
Gradle Maven gibi "faz odaklı" değil mi? IOW, eğer bir gradle publishirade yaparsam da bir installaşamadan geçmeyecek mi?
Chris F


8

Gradle'ın çoklu proje yapıları hakkındaki belgelerine göz atın .

İşte bazı ekstra bağımlılıklara sahip bir örnek. Sadece gradle installkök klasörü arayın ve hepsi inşa edilecek ve yerel repoya konacaktır.

Klasör yapısı:

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

Kök / build.gradle:

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

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

Kök / settings.gradle:

include 'sdk'
include 'example'

Kök / sdk / build.gradle:

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

Kök / example / build.gradle:

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

4
Bu ideal bir uygulama mı? Ya sdk'ye dayanan yeni bir proje, örnek2 oluşturmak istiyorsa? Şimdi bir bağımlılığı paylaştıkları için bir tane ilgili olmayan projeyi bir kök proje altına koymak zorunda mı? Tüm bu 'çoklu proje' kurulumunun da 1 Git projesi olacağını düşünürdünüz. Yine, bu şirket / çoklu geliştirici iş akışları için kötü mü?
Anthony Chuinard

2

Kendi kütüphanenizi yerel veri havuzunuzda yayınlamanız gerekir. Bunu aşağıdaki şekilde yapabilirsiniz:

  1. Eklenti ekle maven-publish:

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. Yayınlama bölümünü derleme dosyanıza ekleyin:

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
  3. Çalıştırmak gradle build publishToMavenLocal

    Belgelerde daha fazla ayrıntı bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.