में रखा गया है, मैंने ग्रोवी में एक कस्टम कार्य लागू किया है। यदि मैं groovy (X.groovy) में कार्यान्वित करने के लिए उपयोगिता वर्ग प्रदान करता हूं और इसे buildsrc में रखता हूं, तो कार्य कार्य करता है। अगर मैं जावा (Y.java) में एक समान वर्ग को लागू करने और एक ही निर्देशिका में यह जगह, कार्य निम्नलिखित त्रुटि संदेश के साथ विफल रहता है:ग्राडल जावा स्रोत से संकलित जावा क्लास फ़ाइलों को लोड नहीं कर रहा है जो buildsrc
:buildsrc:compileGroovystartup failed:
General error during conversion: Could not load class 'com.myinc.gradle.api.data.Y'
from file:/project/buildsrc/build/classes/main/com/myinc/gradle/api/data/Y.class.
Y.class फ़ाइल स्थान त्रुटि में निर्दिष्ट पर मौजूद है संदेश। निर्माण में विफल रहता है जब Y.java सामान्य स्थानों में से किसी में है:
buildsrc/src/main/groovy/.../Y.java<br>
buildsrc/src/main/java/.../Y.java
Gradle प्रलेखन कहते हैं, "तुम सिर्फ इस निर्देशिका में अपने निर्माण स्रोत कोड डाल दिया और एक जावा/ग्रूवी परियोजना के लिए लेआउट सम्मेलन से चिपक कर सकते हैं "और इसकी डिफ़ॉल्ट बिल्डस्क्रैक बिल्ड स्क्रिप्ट लागू की जाएगी।
स्रोत: http://www.gradle.org/docs/current/userguide/organizing_build_logic.html#sec:build_sources
प्रोजेक्ट लेआउट ग्रोवी स्रोत निर्देशिका को ग्रोवी और जावा कोड रखने की अनुमति देता है।
स्रोत: http://www.gradle.org/docs/current/userguide/groovy_plugin.html#sec:groovyCompile
को दोहराने के लिए:
परियोजना/build.gradle:
task t (type: sample.MyTask) {
println "configuring task"
}
परियोजना/buildsrc/src/मुख्य/ग्रूवी/नमूना
MyTask.groovy
package sample
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class MyTask extends DefaultTask {
@TaskAction
public void task() {
println 'task action'
new X().m()
// new Y().m() // uncommenting this line should generate an error when you build 't'
}
}
X.groovy
package sample;
class X {
void m() {
println "x.m"
}
}
Y.java
package sample;
public class Y {
void m() {
System.out.println("y.m");
}
}
OSX 10.8.4, IntelliJ 12.1, Gradle 1.8
मैंने इंटेलिजे में अपनी बड़ी परियोजना के संदर्भ में उपरोक्त कोड चलाया था, लेकिन यह इंटेलिजे के बाहर एक स्वच्छ परियोजना में काम करता है। मुझे यह समझना होगा कि बड़े संदर्भ में समस्या का कारण क्या है। – wjohnson