मैं उचित ऑपरेशन के लिए एक अनूठी आवश्यकता के साथ एक मेवेन प्लगइन बना रहा हूं: इसे स्वयं की नई प्रक्रियाओं को विकसित करने की आवश्यकता है और फिर उन प्रक्रियाओं को कार्य पूरा करने की प्रतीक्षा करें।उचित कक्षा के साथ मेवेन प्लगइन फोर्क प्रक्रिया
हालांकि यह कमांड लाइन पर अपेक्षाकृत मामूली है, मैवेन प्लगइन्स पारंपरिक जावा कोड के समान तरीके से नहीं आते हैं और इस प्रकार कोई क्लासपाथ नहीं है। मैं यह नहीं समझ सकता कि प्लगइन के अंदर सही क्लासपाथ को कैसे हल किया जाए, जैसे कि मैं एक नया जेवीएम (प्लगइन के अंदर किसी अन्य वर्ग की मुख्य विधि का आह्वान) कर सकता हूं।
का उपयोग करते हुए वर्तमान विरूपण साक्ष्य के MavenProject
मैं अपने आप को (प्लगइन) के लिए एक Artifact
संदर्भ मिलता है और यह स्थानीय Maven भंडार के अंदर रिश्तेदार निर्देशिका है प्राप्त करने में सक्षम हूँ:
Artifact self = null;
for (Artifact artifact : project.getPluginArtifacts()) {
if ("my-group-id".equals(artifact.getGroupId()) && "my-artifact-id".equals(artifact.getArtifactId())) {
self = artifact;
break;
}
}
if (self == null) {
throw new MojoExecutionException("Could not find representation of this plugin in project.");
}
for (ArtifactRepository artifactRepository : project.getPluginArtifactRepositories()) {
String path = artifactRepository.pathOf(self);
if (path != null) {
getLog().info("relative path to self: " + path);
break;
}
}
मैं कैसे के सभी के लिए एक संदर्भ मिलता है इसकी निर्भरता (और संक्रमणीय निर्भरता) जैसे कि मैं एक नए आवेदक के लिए एक पूर्ण कक्षा का निर्माण कर सकता हूं? मुझे लगता है कि self
पर एक निर्भरता फ़िल्टर है लेकिन मुझे नहीं पता कि इसे कहां लागू करना है।
क्या यह प्लगइन के अंदर "खुद" की एक नई प्रक्रिया बनाने का उचित तरीका है? क्या कोई बेहतर तरीका है?
एक तृतीय-पक्ष सेवा जिसके साथ मैं बातचीत कर रहा हूं केवल एक कनेक्शन प्रति-प्रक्रिया की अनुमति देता है और उन्हें क्रमशः निष्पादित करने का विकल्प नहीं है। मुझे इस प्लगइन के एक रन में 5 से 20 इंटरैक्शन से कहीं भी होना चाहिए। मैं बाद में आपके सुझावों की जांच करूंगा, धन्यवाद। –