2015-06-24 26 views
5

में विशेष कार्य के लिए जावाएन्ट सेट करना यह मेरा रन कॉन्फ़िगरेशन है।ग्रैडल

task run << { 
    jvmArgs "-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar" 
    jettyRun.execute() 
} 

लेकिन यह मुझे देता है:

Could not find method jvmArgs() 

कैसे आप jettyRun के लिए javaagent निर्धारित करूँ?

उत्तर

4

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

पहला समाधान बहुत आसान है: सामान्य रूप से विकल्प प्रदान करें। उदाहरण के लिए, org.gradle.jvmargs = "-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar" को अपने gradle.properties

में दूसरा तरीका बहुत कठिन है। आप केवल नए जेवीएम को नहीं बढ़ा सकते हैं और कह सकते हैं कि "इस ग्रैडल कार्य को चलाएं"। मुझे लगता है कि आप Gradle Tooling API उपयोग करने के लिए GradleConnector के माध्यम से अपने exising निर्माण config के आधार पर नई प्रक्रिया अंडे देने के लिए की आवश्यकता होगी:

task run << { 
    ProjectConnection connection = GradleConnector.newConnector().forProjectDirectory(new File("someProjectFolder")).connect(); 

    try { 
     BuildLauncher build = connection.newBuild(); 

     build.setJvmArguments("-javaagent:/home/audrius/org.springframework.instrument-3.0.5.RELEASE.jar") 

     build.forTasks("jettyRun").run(); 
    } finally { 
     connection.close(); 
    } 
} 

जैसा कि आप देख, दूसरा समाधान बहुत बदसूरत है। मैं बेहतर पहला दृष्टिकोण चुनना चाहता हूं।

+0

मुझे त्रुटिपूर्ण करता है:: वर्ग प्रोजेक्ट कनेक्शन को हल करने में असमर्थ "। .. –

+0

क्या आपने बिल्ड स्क्रिप्ट क्लासपाथ में 'gradleApi() 'जोड़ा है? – madhead

+1

पहला विकल्प आकर्षण की तरह काम करता है! – varra

2

साथ प्रयास करें।

कार्य रन (प्रकार: JavaExec) < < {...

क्योंकि jvmArgs केवल एक JavaExec टास्क में जाना जाता है।

+0

यह कहता है: "कोई मुख्य वर्ग निर्दिष्ट नहीं है"। JettyRun अलग-अलग तरीके से काम करना चाहिए। –

+0

क्या आपने प्रश्न देखा था। केवल एक लिंक देने के लिए खेद है http://stackoverflow.com/questions/17999062/sending-an-environment-variable-to-jetty-using-jettyrun-in-gradle –