2012-07-25 12 views
9

मैं परियोजना की जड़ से शुरू होने वाले पूरे निर्भरता पेड़ और उनके पोम्स को पुनः प्राप्त करने का प्रयास कर रहा हूं। मैं अपने फाइल सिस्टम में पहले से मौजूद एक पीओएम से शुरू कर रहा हूं, लेकिन मुझे यकीन नहीं है कि रिपोजिटरी से निर्भरता पोम्स कैसे प्राप्त करें।मैवेन जावा एपीआई का उपयोग करके मैवेन आर्टिफैक्ट पीओएम का उपयोग कैसे कर सकता हूं?

मैं निर्भरता सूची तक पहुंचने के लिए निम्न कोड का उपयोग कर रहा हूं। सूची में से मेरे पास कलाकृतियों पर सारी जानकारी है। मुझे यकीन नहीं है कि भंडार का उपयोग कैसे करें।

FileReader reader = null; 
Model model = null; 
MavenXpp3Reader mavenreader = new MavenXpp3Reader(); 

File pomfile = new File("pom.xml"); 

model.setPomFile(pomfile); 
MavenProject project = new MavenProject(model); 

List<Dependency> deps = project.getDependencies(); 

// Get dependency details 
for (Dependency d: deps) {   
    System.out.print(d.getArtifactId()); 
    System.out.print(":"); 
    System.out.println(d.getVersion()); 
}   

उत्तर

1

Unfotunately कि कि तुच्छ :-) मैं हालांकि (खाते है कि आप केवल केंद्रीय रेपो से कलाकृतियों की जरूरत को ध्यान में रखकर) आप कुछ सलाह दे सकते हैं नहीं है।

यहां गिटूब में मिले एक महान example code है। एक विकल्प REST API of the central repo का उपयोग कर सकता है। यहां एक उदाहरण दिया गया है कि do that programmatically कैसे करें।

BTW अगर आप निर्भरता केवल जरूरत है, तो आप भी maven-dependency-plugin सीधे इस्तेमाल कर सकते हैं (इस पर कहा जाता है जैसे mvn dependency:tree - एक उदाहरण के लिए this thread देखें)।

शायद आपकी विधि भी काम कर सकती है, लेकिन मुझे लगता है कि इसे कुछ गायब हिस्सों की आवश्यकता है।

+0

मैं वास्तव में प्रोग्रामेटिकल रूप से मैवेन एपीआई का उपयोग करके अपने स्थानीय भंडार (केंद्रीय रेपो नहीं) से पोम्स को पुनः प्राप्त करने की कोशिश कर रहा हूं। मैं फाइल सिस्टम के माध्यम से स्थानीय भंडार की तलाश कर सकता हूं, लेकिन इसे किसी भी उपयोगकर्ता के साथ कहीं भी काम करने में सक्षम होना चाहिए, इसलिए मैंने सोचा कि एपीआई अधिक उपयुक्त होगा। – davdic

+0

@rlegendi मुझे आपके उपयोग के मामले को नहीं पता है, लेकिन अगर आपको केवल कुछ सार्वजनिक मेवेन पुस्तकालयों की निर्भरता की आवश्यकता है तो आप वर्जनई एपीआई का उपयोग कर सकते हैं: https://www.versioneye.com/api?version=v2। यह एक आरईएसटी JSON एपीआई है और उपयोग करने में बहुत आसान है। –

+0

@RobertReiz क्या आप अपनी टिप्पणी @davdic को संबोधित नहीं करना चाहते थे? :-) वैसे भी, लिंक के लिए thx, लेकिन यह वाणिज्यिक और बीटा उत्पाद लगता है। – rlegendi

2

असल में आप निर्भरताओं को पढ़ने के बहुत करीब थे। सब याद आ रही थी था:

Model model = mavenreader.read(new FileReader(pomFile)); 

पूर्ण उदाहरण:

MavenXpp3Reader mavenreader = new MavenXpp3Reader(); 

File pomfile = new File("pom.xml"); 
Model model = mavenreader.read(new FileReader(pomFile)); 

List<Dependency> deps = model.getDependencies(); 

for (Dependency d: deps) {   
    System.out.print(d.getArtifactId()); 
} 

यह आपको एक निर्भरता वृक्ष नहीं मिलता है, लेकिन आप निर्भरता आप पाते हैं के लिए यह दोहरा सकते हैं।

संबंधित मुद्दे