ग्रेड को mvan स्थापित करने के लिए वैकल्पिक


163

मेरे पास mvan पर 2 अलग-अलग प्रोजेक्ट बिल्ड हैं। मैं ग्रैडल को बदलने की कोशिश कर रहा हूं।

प्रोजेक्ट 1 SDK है और प्रोजेक्ट 2 sdk का उपयोग करता है (उदाहरण)

मावेन के समय में यह mvan install का उपयोग करके कलाकृतियां बनाता है जो पूरे प्रोजेक्ट को स्थानीय भंडार में जोड़ता है।

मुझे इस तरह से काम करना पसंद है। मुझे प्रोजेक्ट 1 बिल्ड पसंद है। मुझे एक स्थानीय स्थानीय रिपॉजिटरी के रूप में इसे पोस्ट करने की आवश्यकता है और फिर उदाहरण के लिए प्रोजेक्ट को इसका उपयोग करने की आवश्यकता है।

मावेन में हम mvan इनस्टॉल करते हैं जो एक प्रोजेक्ट विरूपण साक्ष्य को .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 से भी जानकारी प्राप्त करता है?
राजमेन्द्र

14
gradle installस्थानीय मावेन रेपो में प्रकाशित mavenLocal()करता है , और निर्भरता के लिए वहाँ देखना सुनिश्चित करता है।
पीटर निडरवेइसर

1
क्या ग्रेडल मावेन की तरह "चरण-उन्मुख" नहीं है? IOW, अगर मैं करता हूं तो gradle publishयह एक installचरण से भी नहीं गुजरेगा?
क्रिस एफ

74

आप के लिए देख रहे हो सकता है:

gradle publishToMavenLocal

के पास उपलब्ध है:

apply plugin: 'maven-publish'

देखें: https://docs.gradle.org/current/userguide/publishing_maven.html


3
मावेन विकल्पों के साथ भी यह ठीक काम कर रहा है:gradle -Dmaven.repo.local=.m2/repository publishToMavenLocal
विरल

3
कैसे से अलग है gradle installसाथmaven प्लगइन?
मैट

8

की जाँच करें Gradle के दस्तावेज़ पर बहु परियोजना बनाता है

यहाँ एक उदाहरण है, कुछ अतिरिक्त निर्भरता के साथ। बस gradle installरूट फ़ोल्डर में कॉल करें , और सभी बनाया जाएगा और आपके स्थानीय रेपो में डाल दिया जाएगा।

फ़ोल्डर संरचना:

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, जो एसडीके पर भी निर्भर करता है? अब उसे 2 असंबंधित परियोजनाओं को एक रूट प्रोजेक्ट के तहत रखना होगा क्योंकि वे एक निर्भरता साझा करते हैं? आपको लगता है कि यह पूरा 'मल्टी-प्रोजेक्ट' सेटअप 1 Git प्रोजेक्ट होगा। फिर, क्या यह कंपनी / मल्टी-डेवलपर वर्कफ़्लोज़ के लिए बुरा है?
एंथनी चुइनार्ड

2

आपको अपने स्वयं के पुस्तकालय को अपने स्थानीय भंडार में प्रकाशित करना होगा। आप निम्न तरीके से कर सकते हैं:

  1. maven-publishप्लगइन जोड़ें :

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. अपनी बिल्ड फ़ाइल में प्रकाशन अनुभाग जोड़ें:

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

    प्रलेखन में अधिक जानकारी प्राप्त करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.