दुर्भाग्य से, ग्रैडल जेटी को अपने स्वयं के जेवीएम के अंदर चलाता है, इसलिए आप केवल एक विशिष्ट कार्य के लिए जावागेंट सेट नहीं कर सकते हैं। यह पूरे जेवीएम के लिए सेट है। इसलिए, आपके पास जो कुछ भी आप चाहते हैं उसे पूरा करने के दो तरीके हैं: या तो आप स्वयं को जावाजेंट सक्षम के साथ ग्रैडल चलाते हैं, या आप एक और जेवीएम प्रक्रिया उत्पन्न करते हैं और इसमें जेटी चलाते हैं।
पहला समाधान बहुत आसान है: सामान्य रूप से विकल्प प्रदान करें। उदाहरण के लिए, 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();
}
}
जैसा कि आप देख, दूसरा समाधान बहुत बदसूरत है। मैं बेहतर पहला दृष्टिकोण चुनना चाहता हूं।
मुझे त्रुटिपूर्ण करता है:: वर्ग प्रोजेक्ट कनेक्शन को हल करने में असमर्थ "। .. –
क्या आपने बिल्ड स्क्रिप्ट क्लासपाथ में 'gradleApi() 'जोड़ा है? – madhead
पहला विकल्प आकर्षण की तरह काम करता है! – varra