मुझे मेवेन आर्केटाइप बनाने में दिलचस्पी है, और मुझे लगता है कि मेरे पास मूलभूत बातें हैं। हालांकि, एक चीज जिस पर मैं फंस गया हूं वह यह है कि कभी-कभी मैं टेम्पलेट भरने के लिए कस्टम तर्क का उपयोग करना चाहता हूं। उदाहरण के लिए, अगर कोई मेरी आर्केटाइप उत्पन्न करता है और आर्टिफैक्ट आईडी को हैलो-वर्ल्ड के रूप में निर्दिष्ट करता है, तो मैं हैलोवर्ल्ड नामक एक क्लास जेनरेट करना चाहता हूं जो बस "हैलो वर्ल्ड!" प्रिंट करता है। कंसोल के लिए। यदि कोई अन्य व्यक्ति इसे artifactId = howdy-there के साथ उत्पन्न करता है, तो जेनेड क्लास HowdyThere होगा और यह "Howdy वहाँ!" प्रिंट करेगा।मैवेन आर्केटाइप में कस्टम लॉजिक कैसे प्रदान कर सकता हूं?
मुझे पता है कि कवर के तहत, मेवेन की आर्केटाइप तंत्र वेग वेग टेम्पलेट इंजन का लाभ उठाती है, इसलिए मैंने इस लेख को creating custom directives पर पढ़ा। ऐसा लगता है कि मैं क्या देख रहा था, इसलिए मैंने HyphenatedToCamelCaseDirective नामक एक क्लास बनाई जो org.apache.velocity.runtime.directive.Directive को बढ़ाता है। उस कक्षा में, मेरा getName() कार्यान्वयन "hyphenatedCamelCase" देता है। मेरी आदर्श-metadata.xml फ़ाइल में, मैं निम्नलिखित है ...
<requiredProperties>
<requiredProperty key="userdirective">
<defaultValue>com.jlarge.HyphenatedToCamelCaseDirective</defaultValue>
</requiredProperty>
</requiredProperties>
मेरे टेम्पलेट वर्ग इस तरह दिखता है ...
package ${package};
public class #hyphenatedToCamelCase('$artifactId') {
// userdirective = $userdirective
public static void main(String[] args) {
System.out.println("#hyphenatedToCamelCase('$artifactId')"));
}
}
मैं अपने मूलरूप आदर्श स्थापित करें और उसके बाद एक आदर्श करने के बाद: निर्दिष्ट करने के द्वारा उत्पन्न artifactId = कैसे हो वहाँ और ग्रुप = f1.f2, जिसके परिणामस्वरूप वर्ग इस तरह दिखता है ...
package f1.f2;
public class #hyphenatedToCamelCase('howdy-there') {
// userdirective = com.jlarge.HyphenatedToCamelCaseDirective
public static void main(String[] args) {
System.out.println("#hyphenatedToCamelCase('howdy-there')"));
}
}
परिणाम से पता चलता है कि भले ही userdirective तरह से मैं यह करने की उम्मीद किया जा रहा है, यह नहीं है#hyphenatedToCamelCase निर्देशों को विकसित करना जैसे कि मैं उम्मीद कर रहा था। निर्देश वर्ग में, मैं System.out के लिए एक संदेश लॉग इन करने विधि प्रस्तुत करना है, लेकिन उस संदेश, कंसोल में दिखाई नहीं देता तो यह है कि मुझे विश्वास है कि विधि मूलरूप आदर्श के दौरान कभी नहीं मार डाला गया: उत्पन्न करते हैं।
क्या मुझे यहां कुछ आसान याद आ रहा है, या यह दृष्टिकोण सिर्फ जाने का रास्ता नहीं है?