के दौरान मैंने एक ग्रोवी एएसटी परिवर्तन लिखा है जो केवल मेरे लिए चलता है जब Grails कक्षा को स्वत: पुनः लोड करता है, इसे लागू किया जाना है। यदि मैं प्रोजेक्ट को साफ़ करता हूं और रन-ऐप का उपयोग करके एप्लिकेशन शुरू करता हूं, तो एएसटी रूपांतरण नहीं चलता है। कक्षा को छूना ताकि ग्राइल्स ऑटो-रीलोड्स के परिणामस्वरूप चल रहे परिवर्तन में परिणाम हो।ग्रोवी एएसटी परिवर्तन ग्रेल्स संकलन के दौरान लागू नहीं होता है, केवल ऑटो-रीलोडिंग
एनोटेशन और एएसटीट्रांसफॉर्मेशन कार्यान्वयन मेरे Grails अनुप्रयोग में src/groovy निर्देशिका में स्थित groovy कक्षाएं हैं। डोमेन निर्देशिका में ग्रोवी में लिखे गए डोमेन वर्गों पर एनोटेशन का उपयोग किया जाता है।
क्या यह संभव है कि यह ग्रोवी फाइलों को संकलित या ऑर्डर क्लासलोडर द्वारा लोड किए जाने के क्रम के कारण हो? यदि हां, तो मैं कैसे सुनिश्चित करूं कि मेरा वर्ग ट्रांसफोर्मेशन डोमेन कक्षाओं से पहले संकलित/लोड हो गया है?
एनोटेशन:
@Target([ElementType.TYPE])
@Retention(RetentionPolicy.RUNTIME)
@GroovyASTTransformationClass(["com.abc.annotation.SecuredObjectASTTransformation"])
public @interface SecuredObject {
}
ASTTransforamtion कार्यान्वयन:
@GroovyASTTransformation(phase = CompilePhase.CANONICALIZATION)
class SecuredObjectASTTransformation implements ASTTransformation {
@Override
public void visit(ASTNode[] nodes, SourceUnit sourceUnit) {
// add some new properties...
}
}
Grails संस्करण 2.1.0 है।