เลือก Gradle เป็น mvn เพื่อติดตั้ง


163

ฉันมีงานสร้าง 2 แบบที่ต่างกันใน mvn ฉันพยายามแทนที่เป็น Gradle

โครงการ 1 เป็น SDK และโครงการ 2 ใช้ sdk (ตัวอย่าง)

ในช่วงเวลาของ Maven มันสร้างสิ่งประดิษฐ์โดยใช้การติดตั้ง mvn ซึ่งเพิ่มโครงการทั้งหมดลงในพื้นที่เก็บข้อมูลท้องถิ่น

ฉันชอบทำงานแบบไล่ระดับอย่างนั้น ฉันชอบ project 1 build.gradle จำเป็นต้องโพสต์เป็นที่เก็บข้อมูลในระดับพื้นที่และจากนั้นตัวอย่างโครงการจำเป็นต้องใช้

ใน maven เราทำการติดตั้ง mvn ซึ่งเพิ่มสิ่งประดิษฐ์โครงการลงในโฟลเดอร์. m2 แต่จะทำอย่างไรในการไล่ระดับดังนั้นสิ่งที่ฉันสามารถเพิ่มสิ่งประดิษฐ์ของโครงการลงในพื้นที่เก็บข้อมูลท้องถิ่น

ทางไหนที่ฉันสามารถทำได้


คำตอบ:


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
ใช้ปลั๊กอิน: "maven" และ $ sdk> gradle ติดตั้งจะติดตั้ง sdk ใน. m2 ใช่ไหม และ mavenLocal () ยังได้รับข้อมูลจาก. m2 และ .gradle
Rajmahendra

14
gradle installเผยแพร่ใน repo Maven ท้องถิ่นและmavenLocal()ตรวจสอบให้แน่ใจว่ามีการอ้างอิง
Peter Niederwieser

1
Gradle ไม่ใช่ "เชิงเฟส" เหมือน Maven หรือไม่? IOW ถ้าฉันทำgradle publishมันจะไม่ผ่านinstallขั้นตอนด้วยหรือไม่
Chris F

74

คุณอาจกำลังมองหา:

gradle publishToMavenLocal

มาพร้อมกับ:

apply plugin: 'maven-publish'

ดูที่: https://docs.gradle.org/current/userguide/publishing_maven.html


3
ก็ปรับการทำงานแม้จะมีตัวเลือก Maven:gradle -Dmaven.repo.local=.m2/repository publishToMavenLocal
เบาบาง

3
วิธีการที่แตกต่างกันนี้จากการgradle installที่มีmavenปลั๊กอิน?
Matt

8

ตรวจสอบเอกสาร Gradle ในหลายโครงการสร้าง

นี่คือตัวอย่างที่มีการอ้างอิงพิเศษบางอย่าง เพียงโทรgradle installในรูทโฟลเดอร์และทั้งหมดจะถูกสร้างขึ้นและนำไปสู่ ​​repo ในพื้นที่ของคุณ

โครงสร้างโฟลเดอร์:

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

ราก / build.gradle:

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

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

ราก / settings.gradle:

include 'sdk'
include 'example'

ราก / SDK / build.gradle:

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

ราก / ตัวอย่าง / build.gradle:

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

4
นี่เป็นการฝึกในอุดมคติหรือไม่? จะเป็นอย่างไรถ้าเขาต้องการสร้างโครงการใหม่ตัวอย่างที่ 2 ซึ่งต้องพึ่งพา sdk ด้วย ตอนนี้เขาต้องใส่ 2 โครงการที่ไม่เกี่ยวข้องภายใต้โครงการรูทเพียงเพราะพวกเขาแบ่งปันการพึ่งพาหรือไม่ คุณคิดว่าการติดตั้ง 'หลายโครงการ' ทั้งหมดนี้เป็น 1 โครงการ Git เช่นกัน นี่เป็นสิ่งที่ไม่ดีสำหรับเวิร์กโฟลว์ บริษัท / ผู้พัฒนาหลายรายหรือไม่
Anthony Chuinard

2

คุณต้องเผยแพร่ห้องสมุดของคุณเองไปยังที่เก็บในเครื่องของคุณ คุณสามารถทำได้ด้วยวิธีต่อไปนี้:

  1. เพิ่มmaven-publishปลั๊กอิน:

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. เพิ่มส่วนการประกาศลงในไฟล์บิลด์ของคุณ:

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
  3. วิ่ง gradle build publishToMavenLocal

    ค้นหารายละเอียดเพิ่มเติมในเอกสาร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.