मुझे एक प्रोजेक्ट मिला है जहां मैं जावा स्रोत फ़ाइलों के पेड़ से एक लाइब्रेरी प्रोजेक्ट में एक फ़ाइल शामिल करने का प्रयास कर रहा हूं। जो भी मैं करता हूं मैं केवल उस फ़ाइल को शामिल करने में सक्षम नहीं हूं। मुझे एक और परियोजना में सफलता मिली है, जिसमें सभी को छोड़कर सभी फाइलें शामिल हैं, लेकिन केवल लाइब्रेरी प्रोजेक्ट से ही धीरे-धीरे चलने पर ही काम किया जाता है। जब यह एप्लिकेशन निर्देशिका से चलाया गया था, तो सभी फाइलें शामिल थीं। एक साधारण परियोजना बनाने की कोशिश करते हुए, जो इस मुद्दे को पुन: उत्पन्न करता है, वही बहिष्कृत करता है जो सभी काम नहीं करता है।Gradle स्रोत से फ़ाइल को बाहर निकालेंसेट नहीं कर रहा है
नमूना फ़ाइल पेड़ सरल है:
application - android app that includes the two libraries
library1/
build.gradle
src/main/AndroidManifest.xml
library2/
build.gradle
src/main/AndroidManifest.xml
java/src/com/company/product/
/pkg1
Source1.java, Source2.java, Source3.java
libraryoneonly/Library1Source.java
/pkg2
Source1.java, Source2.java, Source3.java
library1 build.gradle इस तरह दिखता है। इनमें से कोई भी नीचे काम शामिल या शामिल नहीं करता है।
library1/build.gradle
apply plugin: 'com.android.library'
android {
sourceSets {
main.jni.srcDirs = []
main.jniLibs.srcDir 'src/main/libs'
main.java {
srcDir "../../java/src"
exclude { FileTreeElement elem ->
println "Searching for files, found: " + elem.relativePath
!(elem.isDirectory() || elem.name.equals('Library1Source.java'))
}
//include ("**/libraryoneonly/**")
//include ('com/company/product/pkg1/libraryoneonly/Library1Source.java')
}
}
dependencies {
compile project(':library2')
}
और library2 build.gradle। हैरानी की बात है कि नीचे उल्लिखित अनदेखा काम करता है।
library2/build.gradle
apply plugin: 'com.android.library'
android {
sourceSets {
main.jni.srcDirs = []
main.jniLibs.srcDir 'src/main/libs'
main.java {
srcDir "../../java/src"
//exclude { FileTreeElement elem -> ((elem.path.contains('/libraryoneonly/'))) }
exclude ('com/company/product/pkg1/libraryoneonly/Library1Source.java')
}
}
बस नोट करने के लिए, मैं देख रहा हूँ कभी नहीं "फ़ाइलों के लिए खोज में पाया गया" पाठ library1 बनाने जा रहा है। मुझे यकीन नहीं है क्यों। मैं इसे बड़े प्रोजेक्ट में देखता हूं, इस परीक्षण का मॉडल कहां से चलाया गया था, इस पर निर्भर करता है कि निर्माण कहां से चलाया गया था।
आप नमूना परियोजना खींच और इसे आज़माने के लिए चाहते हैं, तो यहाँ एक कड़ी है: https://github.com/gbak/gradleTest
आपकी प्रतिक्रिया के लिए धन्यवाद, मैंने थोड़ी देर पहले srcDir दृष्टिकोण की कोशिश की है और मुझे याद है कि कुछ दोष था, मुझे इसका उपयोग करने की इजाजत नहीं थी। मुझे यह याद करने के लिए स्रोतों को अलग-अलग पैकेजों में विभाजित करना भी याद है। मुझे अपनी याददाश्त को रीफ्रेश करने के लिए इसे फिर से प्रयास करना होगा। बाहर निकलें सबकुछ किसी अन्य प्रोजेक्ट में काम करता है। –
क्या आपके पास srcDir दृष्टिकोण पुनः प्रयास करने का मौका था? – RaGe
कृपया ध्यान दें कि एंड्रॉइड ग्रैडल प्लगइन * ग्रैडल का डिफ़ॉल्ट स्रोत (डायरेक्टरी) सेट का उपयोग नहीं करता है, लेकिन इसका अपना [एंड्रॉइडसोर्स (डायरेक्टरी) सेट] (https://google.github.io/android-gradle-dsl/current/ com.android.build.gradle.api.AndroidSourceSet.html) कार्यान्वयन। तो ग्रैडल स्रोत कोड को उद्धृत करना यहां मान्य नहीं हो सकता है। – sschuberth