2012-04-09 10 views
16

मैं एक प्लगइन बनाना चाहता हूं जो स्वचालित रूप से अन्य (बाहरी प्लगइन्स) लागू करता है। "प्लगइन लागू करें" कॉल करने से पहले प्लगइन के लिए बिल्डस्क्रिप्ट निर्भरता को सेट करने की आवश्यकता है। हालांकि ऐसा लगता है कि मैं प्लगइन में बिल्डस्क्रिप्ट निर्भरता नहीं जोड़ सकता या मुझे लगता है: आप एक कॉन्फ़िगरेशन नहीं बदल सकते जो अनसुलझा स्थिति में नहीं है!किसी अन्य (बाहरी) प्लगइन पर निर्भरता के साथ एक ग्रैडल प्लगइन बनाना

क्या इसका कोई समाधान है?

मेरे नमूना (गैर काम कर रहे) कोड:

import org.gradle.api.Project 
import org.gradle.api.Plugin 
class SamplePlugin implements Plugin<Project>{ 
    void apply(Project project) { 

    project.buildscript.dependencies.add("classpath","net.sourceforge.cobertura:cobertura:1.9.4.1"); 

    project.configure(project){   
     apply plugin: 'cobertura' 
    } 
    } 
} 

उत्तर

7

इस बारे में जाने का रास्ता एक pom.xml प्रकाशित या प्लगइन जार कि प्लगइन का निर्भरता का वर्णन के साथ साथ ivy.xml है। वैकल्पिक रूप से, आप एक स्क्रिप्ट प्लगइन लिख सकते हैं जो इसकी निर्भरताओं को buildscript {} अनुभाग में घोषित करता है। एक स्क्रिप्ट प्लगइन बस एक पुन: प्रयोज्य बिल्ड स्क्रिप्ट है जो apply from: ... के साथ लागू हो जाती है।

+3

यदि कोई दिलचस्पी लेता है कि यह वास्तव में कैसे किया जाता है: आपको अपने MavenPublication में डिफ़ॉल्ट POM का विस्तार करना होगा। नेटफ्लिक्स के नेबुला प्लगइन्स उदाहरणों के लिए एक महान स्रोत हैं: https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src%2Fmain%2Fgroovy%2Fnebula%2Fplugin%2Fpublishing%2Fmaven%2FMavenJavaPublishingPlugin.groovy – Matthias

+9

अगर कोई इस पृष्ठ पर जाता है तो नेबुला प्रकाशित प्लगइन का नवीनतम लिंक। https://github.com/nebula-plugins/nebula-publishing-plugin/blob/master/src/main/groovy/nebula/plugin/publishing/maven/MavenPublishPlugin.groovy – dmahapatro

संबंधित मुद्दे