मेरे पास कई मॉड्यूल और एक मुख्य एप्लिकेशन के साथ एक जटिल परियोजना है। मैंने इन मॉड्यूल में से दो पर "अपलोडआर्चिव्स" जोड़ा (क्योंकि एंड्रॉइड लाइब्रेरीज़ हैं)। इस तरह से मैं अपने मुख्य अनुप्रयोग से कार्य अपलोड करने के लिए मेवेन पर अपने पुस्तकालयों को प्रकाशित कर सकता हूं, या ग्रेडल का उपयोग करके और इस कार्य को "अपलोडआर्किव" कह रहा हूं।
आप "build.finalizedBy (uploadArchives)" (पुस्तकालय है कि आप प्रकाशित करना चाहते हैं के) अपने build.gradle में इस का उपयोग कर सकते हैं।
उदाहरण के लिए:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 17
targetSdkVersion 23
versionCode 2
versionName "2.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
abortOnError false
}
}
build.finalizedBy(uploadArchives)
task wrapper(type: Wrapper) {
gradleVersion = "2.8"
}
dependencies {
compile project(':spfshared')
compile 'com.google.code.gson:gson:2.4'
}
//task for Sonatype Nexus OSS
uploadArchives {
repositories {
mavenDeployer {
repository(
url: "${nexusUrl}/content/repositories/releases") {
authentication(userName: nexusUsername, password: nexusPassword)
}
snapshotRepository(
url: "${nexusUrl}/content/repositories/snapshots") {
authentication(userName: nexusUsername, password: nexusPassword)
}
pom.version = "2.0.0.1"
pom.artifactId = "spflib"
pom.groupId = "it.polimi.spf"
}
}
}
हर निर्माण के बाद, uploadArchives होगा शुरू होता है।
मैंने इस समाधान की कोशिश की और यह काम करता है।
मैं भी सफलता नहीं मिली "build.dependsOn myTaskName" के साथ कुछ समाधान की कोशिश की। यदि आप चाहते हैं कि आप कोशिश कर सकते हैं, लेकिन मेरे एंड्रॉइडस्टूडियो पर, पहला समाधान यह काम करता है।
पुनश्च: मैं अपने समाधान आदेश का उपयोग "gradlew -q निर्माण" और भी विशेष रूप से कार्य एंड्रॉयड स्टूडियो में अपने मुख्य मॉड्यूल से "का निर्माण" (यह है कि यह अपने मुख्य अनुप्रयोग है) चल रहा का परीक्षण किया।
आप हर रिहाई पर "uploadArchives" कॉल करना चाहते हैं, तो बस रिहाई कार्य के साथ "का निर्माण" की जगह।
अद्यतन: मैं इन codelines साथ भी करने की कोशिश की:
defaultTasks 'uploadArchives'
clean.finalizedBy(uploadArchives)
assembleDebug.finalizedBy(uploadArchives)
assembleRelease.finalizedBy(uploadArchives)
लेकिन कभी कभी वे "uploadArchives" कई बार फोन और मुझे लगता है कि यह एक अच्छा विचार नहीं है।
क्या आप बहुत ही चुनौतीपूर्ण है पूछ रहे हैं ... मैं एक पूरी घंटे :)
स्रोत
2016-04-10 18:01:08
आप एक travis.ci या निर्माण स्वचालन स्क्रिप्ट (.sh फ़ाइल) का एक और प्रकार बनाने के बारे में सोचा है के लिए करने की कोशिश की? निश्चित रूप से gradlew या किसी अन्य टर्मिनल उपकरण में ऐप बनाने के लिए एक विकल्प है। वहां से प्रत्येक बार जब आप इन क्रियाओं को निष्पादित करना चाहते हैं, तो अपनी बिल्ड स्क्रिप्ट चलाने के जितना आसान होगा। –