मैं अपनी प्लगइन को कॉन्फ़िगर करने के लिए new rule based configuration in Gradle को आजमा देना चाहता हूं। प्लगइन का पीछा क्लाउड स्टोरेज जैसे डेटा को Google ड्राइव या S3 जैसे अपलोड कर रहा है। मुझे उपयोगकर्ता द्वारा उपयोग किए जाने वाले प्रत्येक संग्रहण के लिए कॉन्फ़िगरेशन की आवश्यकता है। तो, क्या मैं हासिल करना चाहते हैं:ग्रैडल नियम-आधारित मॉडल नेस्टेड बीन्स सिंटैक्स
model {
backup { // this is a container for all storages I want to support
googleDrive {
clientId = ''
clientSecret = ''
accessToken = ''
refreshToken = ''
}
s3 {
// S3 specific config (like API keys)
}
}
}
मेरी प्लगइन में मैं backup
तत्व के लिए नियम स्रोत कॉन्फ़िगर करें:
class BackupPlugin implements Plugin<Project> {
static class Rules extends RuleSource {
@Model
void backup(BackupPluginExtension backupModel) {}
}
}
@Managed
interface BackupPluginExtension {
GoogleDrive getGoogleDrive()
void setGoogleDrive(GoogleDrive googleDrive)
}
@Managed
interface GoogleDrive {
String getClientId()
void setClientId(String clientId)
String getClientSecret()
void setClientSecret(String clientSecret)
String getAccessToken()
void setAccessToken(String accessToken)
String getRefreshToken()
void setRefreshToken(String refreshToken)
}
लेकिन, वह कह रही है काम नहीं करता: Could not find method googleDrive() for arguments [[email protected]1b06ac95] on root project 'test'.
। ऐसा लगता है कि यह backup
के अंदर विधियों को कॉल करने का प्रयास करता है और नेस्टेड सेम कॉन्फ़िगर नहीं करता है।
तो, इसके लिए सही वाक्यविन्यास क्या है?
मुझे नामित संग्रह के बारे में पता है, लेकिन सवाल यह है कि कस्टम बीन पदानुक्रमों को कैसे कॉन्फ़िगर करें।
'build.gradle' से [यहां] (https://github.com/Opalo/stackoverflow/tree/master/34359856) अच्छी तरह से संकलित करता है। क्या आपके पास समस्याग्रस्त फ़ाइल का एक उदाहरण है? – Opal
@ ओपल, नहीं, ऐसा नहीं है। './gradlew build' Gradle के आलसी स्वभाव की वजह से ./gradlew model' बलों मॉडल पदानुक्रम का निर्माण करने और काम कर सकते हैं, लेकिन' के साथ विफल: 'विधि का कोई हस्ताक्षर नहीं:) BackupPluginExtension.googleDrive (तर्क प्रकार के लिए लागू होता है: (build_dg6xcmwhd5yulrz1952ef2hf7 $ _run_closure1 $ _closure2 $ _closure3) मान: [build_dg6xcmwhd5yulrz1952ef2hf7 $ _run_closure1 $ _closure2 $ _closure3 @ 6b95c03e] ' – madhead
एक नज़र होगा :) – Opal