खोज…


वाक्य - विन्यास

  • groovy.util.Node = node.find {चाइल्डनोड -> वापसी सच || असत्य }
  • node.append (nodeYouWantAsAChild)
  • groovy.util.Node parsedNode = (नया XmlParser ())। parseText (someRawXMLString)
  • '' 'म्यूटली-लाइन स्ट्रिंग (प्रक्षेप नहीं)' ''

टिप्पणियों

एक IntelliJ परियोजना की तीन बुनियादी फाइलें - ipr, iws और iml फाइलें - के माध्यम से विचार कार्य में ग्रेड के रूप में पहुँचा जा सकता है

project.ipr
module.iml
workspace.iws

.withXml का उपयोग करने से आप xml का उपयोग कर सकते हैं। उस पर .asNode () का उपयोग करके इसे एक ग्रूवी xml नोड में बदल दिया जाता है।

उदाहरण के लिए:

project.ipr.withXml { provider ->
    def node = provider.asNode()

वहाँ से यह बहुत सरल है - आप के लिए IntelliJ प्रोजेक्ट्स को कॉन्फ़िगर करने के लिए gradle को संशोधित करने के लिए, फ़ाइल को शुरू करने के साथ ही, उन क्रियाओं को करें जिन्हें आप करना चाहते हैं (IntelliJ के अंदर), और फिर पुरानी फ़ाइल के साथ नई फ़ाइल को अलग करें। आपको यह देखना चाहिए कि विचार कार्य को अनुकूलित करने के लिए आपको XML की क्या आवश्यकता होगी। आपको यह भी ध्यान रखना होगा कि xml में यह कहाँ स्थित है।

विचार करने के लिए एक और बात यह है कि यदि आप एक से अधिक बार विचार को चलाते हैं, तो आप IntelliJ फ़ाइलों के भीतर डुप्लिकेट नोड्स नहीं चाहते हैं। इसलिए, आप उस नोड की खोज करना चाहते हैं जिसे आप बनाना चाहते हैं और अगर यह नहीं है, तो आप इसे बना और डाल सकते हैं।

नुकसान:

कभी-कभी, खोज विधि में स्ट्रिंग तुलना के लिए == का उपयोग करते समय, यह विफल हो जाता है। जब परीक्षण और मुझे पता चलता है कि मामला है, तो मैं .contains का उपयोग करता हूं।

नोड्स की खोज करते समय, सभी नोड्स में वह विशेषता नहीं होती है जिसे आप मानदंड के रूप में उपयोग कर रहे हैं, इसलिए नल की जांच करना सुनिश्चित करें।

एक बेसिक रन कॉन्फ़िगरेशन जोड़ें

इस उदाहरण के लिए अनुमान:

  • आपके पास एक वर्ग है, foo.bar.Baz
  • आप एक रन कॉन्फ़िगरेशन बनाना चाहेंगे जो मुख्य विधि को चलाता है।
  • यह fooBar नामक एक मॉड्यूल में है।

आपकी ग्रेड फ़ाइल में:

idea {    
    workspace.iws.withXml { provider ->
        // I'm not actually sure why this is necessary
        def node = provider.asNode()    

        def runManager = node.find { [email protected]('RunManager')}

        // find a run configuration if it' there already
        def runner = runManager.find { it.find ({ mainClass ->
            return mainClass.@name != null && mainClass.@name == "MAIN_CLASS_NAME" && mainClass.@value != null && [email protected]('Baz');
        }) != null }

        // create and append the run configuration if it doesn't already exists
        if (runManager != null && runner == null){
            def runnerText = '''
                <configuration default="false" name="Baz" type="Application" factoryName="Application" nameIsGenerated="true">
                  <extension name="coverage" enabled="false" merge="false" runner="idea">
                    <pattern>
                      <option name="PATTERN" value="foo.bar.Baz" />
                      <option name="ENABLED" value="true" />
                    </pattern>
                  </extension>
                  <option name="MAIN_CLASS_NAME" value="foo.bar.Baz" />
                  <option name="VM_PARAMETERS" value="" />
                  <option name="PROGRAM_PARAMETERS" value="" />
                  <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
                  <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
                  <option name="ALTERNATIVE_JRE_PATH" />
                  <option name="ENABLE_SWING_INSPECTOR" value="false" />
                  <option name="ENV_VARIABLES" />
                  <option name="PASS_PARENT_ENVS" value="true" />
                  <module name="foobar" />
                  <envs />
                  <method />
                </configuration>'''
            runner = (new XmlParser()).parseText(runnerText)
            runManager.append(config);
        }

        // If there is no active run configuration, set the newly made one to be it
        if (runManager != null && runManager.@selected == null) {
            runManager.@selected="${runner.@factoryName}.${runner.@name}"
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow