मैं अपनी परियोजना के पुस्तकालय स्रोतों में सीधे स्थानीय जार फाइलें (मावेन भंडार का हिस्सा नहीं) कैसे जोड़ूं?
install-file
स्क्रिप्ट से परहेज करता हूं ।
मैं अपनी परियोजना के पुस्तकालय स्रोतों में सीधे स्थानीय जार फाइलें (मावेन भंडार का हिस्सा नहीं) कैसे जोड़ूं?
install-file
स्क्रिप्ट से परहेज करता हूं ।
जवाबों:
अपने स्थानीय मावेन भंडार में जार को निम्नानुसार स्थापित करें:
mvn install:install-file \
-Dfile=<path-to-file> \
-DgroupId=<group-id> \
-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=<packaging> \
-DgeneratePom=true
जहां प्रत्येक को संदर्भित करता है:
<path-to-file>
: फ़ाइल को लोड करने का पथ उदा → c:\kaptcha-2.3.jar
<group-id>
: वह समूह जिसे फ़ाइल → के तहत पंजीकृत होना चाहिए com.google.code
<artifact-id>
: फ़ाइल के लिए कलाकृतियों का नाम → kaptcha
<version>
: फ़ाइल का संस्करण जैसे → 2.3
<packaging>
: फ़ाइल की पैकेजिंग जैसे → jar
संदर्भ
install:install-file
आप स्थानीय निर्भरता को सीधे जोड़ सकते हैं (जैसा कि प्रॉप्राइटर लाइब्रेरीज़ के साथ मावेन प्रोजेक्ट में उल्लिखित है ) इस तरह से:
<dependency>
<groupId>com.sample</groupId>
<artifactId>sample</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/Name_Your_JAR.jar</systemPath>
</dependency>
अपडेट करें
नई रिलीज़ में इस सुविधा को पदावनत के रूप में चिह्नित किया गया है, लेकिन अभी भी काम कर रहा है और अभी तक हटाया नहीं गया है (आप केवल प्रारंभ होने के दौरान लॉग में चेतावनी देखें)। इस मुद्दे के बारे में maven समूह में एक मुद्दा उठाया गया है https://issues.apache.org/jira/browse/MNG-6523 (आप भाग ले सकते हैं और वर्णन कर सकते हैं कि यह सुविधा कुछ मामलों में सहायक क्यों है)। मुझे उम्मीद है कि यह सुविधा वहां बनी हुई है!
यदि आप मुझसे पूछ रहे हैं, जब तक कि सुविधा को हटा नहीं दिया जाता है, मैं अपनी परियोजना में केवल एक शरारती जार फ़ाइल पर निर्भरता बनाने के लिए इसका उपयोग करता हूं जो कि रिपॉजिटरी में फिट नहीं है। यदि यह सुविधा हटा दी जाती है, तो, यहाँ बहुत सारे अच्छे उत्तर हैं, जिन्हें मैं बाद में चुन सकता हूँ!
artifactId
और groupId
गलत तरीके के आसपास नहीं हैं?
सबसे पहले, मैं इस जवाब के लिए एक गुमनाम स्टैक ओवरफ्लो उपयोगकर्ता को क्रेडिट देना चाहूंगा - मुझे पूरा यकीन है कि मैंने पहले भी यहां इसी तरह का जवाब देखा है - लेकिन अब मुझे यह नहीं मिल रहा है।
निर्भरता के रूप में स्थानीय JAR फ़ाइलों के लिए सबसे अच्छा विकल्प एक स्थानीय मावेन भंडार बनाना है। इस तरह का भंडार इसमें pom फ़ाइलों के साथ एक उचित निर्देशिका संरचना से अधिक कुछ नहीं है।
मेरे उदाहरण के लिए: मेरे पास ${master_project}
स्थान पर मेरा मास्टर प्रोजेक्ट है और सबप्रोजेक्ट 1 चालू है ${master_project}/${subproject1}
।
तब मैं में एक Maven भंडार बनाने के लिए:
${master_project}/local-maven-repo
।
सबप्रोजेक्ट 1 में स्थित पोम फाइल में ${master_project}/${subproject1}/pom.xml
, रिपॉजिटरी को निर्दिष्ट करने की आवश्यकता है जो URL पैरामीटर के रूप में फाइल पथ लेगा:
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:///${project.parent.basedir}/local-maven-repo</url>
</repository>
</repositories>
निर्भरता को किसी अन्य भंडार के रूप में निर्दिष्ट किया जा सकता है। यह आपके पोम रिपॉजिटरी को स्वतंत्र बनाता है। उदाहरण के लिए, मावेन केंद्रीय में वांछित JAR उपलब्ध होने के बाद, आपको बस इसे अपने स्थानीय रेपो से हटाने की आवश्यकता है और इसे डिफ़ॉल्ट रेपो से खींच लिया जाएगा।
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.servicebinder</artifactId>
<version>0.9.0-SNAPSHOT</version>
</dependency>
अंतिम लेकिन कम से कम काम करने के लिए स्थानीय रिपॉजिटरी का उपयोग करके JAR फ़ाइल को जोड़ना है -DlocalRepositoryPath स्विच जैसे:
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \
-Dfile=/some/path/on/my/local/filesystem/felix/servicebinder/target/org.apache.felix.servicebinder-0.9.0-SNAPSHOT.jar \
-DgroupId=org.apache.felix -DartifactId=org.apache.felix.servicebinder \
-Dversion=0.9.0-SNAPSHOT -Dpackaging=jar \
-DlocalRepositoryPath=${master_project}/local-maven-repo
एक बार जब JAR फ़ाइल स्थापित हो जाती है, तो आपका मैवेन रेपो कोड रिपॉजिटरी के लिए प्रतिबद्ध हो सकता है, और पूरा सेट-अप सिस्टम स्वतंत्र होता है। ( GitHub में काम करने का उदाहरण )।
मैं मानता हूं कि स्रोत कोड रेपो के लिए JAR का होना अच्छा अभ्यास नहीं है, लेकिन वास्तविक जीवन में, त्वरित और गंदे समाधान एक JAR की मेजबानी करने के लिए पूर्ण विकसित नेक्सस रेपो की तुलना में कभी-कभी बेहतर होते हैं जिन्हें आप प्रकाशित नहीं कर सकते।
${project.parent.basedir}
आजकल मैं किसी भी चीज़ का समाधान नहीं करता ${project.basedir}/..
और मैं पूरी तरह से काम करता हूँ।
<mirrorOf>*</mirrorOf>
।
एक नया फ़ोल्डर बनाएँ, चलो local-maven-repo
अपने मावेन प्रोजेक्ट के मूल में कहें ।
बस अपने अंदर एक स्थानीय रेपो जोड़ने <project>
अपने की pom.xml
:
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:///${project.basedir}/local-maven-repo</url>
</repository>
</repositories>
फिर प्रत्येक बाहरी जार के लिए जिसे आप स्थापित करना चाहते हैं, अपनी परियोजना के मूल में जाएं और निष्पादित करें:
mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]
local-maven-repo
आपके स्रोत फ़ोल्डर में फ़ोल्डर शामिल है (इस उदाहरण में एक बच्चे के रूप में)
मैं इस तरह के समाधान चाहते हैं - maven-install-plugin
pom फ़ाइल में उपयोग करें :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>lib/yourJar.jar</file>
<groupId>com.somegroup.id</groupId>
<artifactId>artefact-id</artifactId>
<version>x.y.z</version>
<packaging>jar</packaging>
</configuration>
</execution>
</executions>
</plugin>
इस मामले में आप प्रदर्शन कर सकते हैं mvn initialize
और जार स्थानीय मावेन रेपो में स्थापित किया जाएगा। अब यह जार इस मशीन पर किसी भी मावेन कदम के दौरान उपलब्ध है ( <dependency></dependency>
टैग के साथ पोम में किसी अन्य मावेन निर्भरता के रूप में इस निर्भरता को शामिल करना न भूलें )। यह भी संभव है कि जार को न बांधें initialize
, न कि किसी और कदम पर, जिसे आप पसंद करते हैं।
mvn initialize
पहले चलाता हूं mvn package
: मैं नहीं कर सकता mvn initialize package
या तो यह केंद्रीय रेपो से जार डाउनलोड करने की कोशिश करता है। ऐसा क्यों है? मुझे लगा कि यह इस लक्ष्य / चरणों को क्रम से चलाएगा।
compile
) तो निर्माण विफल हो जाएगा।
<dependency>
<groupId>group id name</groupId>
<artifactId>artifact name</artifactId>
<version>version number</version>
<scope>system</scope>
<systemPath>jar location</systemPath>
</dependency>
<scope>system
अब पदावनत कर दिया गया है।
install:install-file
और इसे "सामान्य" निर्भरता (डिफ़ॉल्ट गुंजाइश के साथ compile
) के रूप में उपयोग करते हैं या इन-प्रोजेक्ट रिपॉजिटरी समाधान का उपयोग करते हैं ।
हाँ, आपके पास हो सकता है लेकिन इसका विचार अच्छा नहीं है।
इसके बजाय इन सभी जार को रिपॉज करने के लिए स्थापित करें
और देखें
वास्तव में त्वरित और गंदा तरीका एक स्थानीय फ़ाइल को इंगित करना है:
<dependency>
<groupId>sample</groupId>
<artifactId>com.sample</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath>
</dependency>
हालाँकि यह केवल आपकी मशीन (जाहिर है) पर रहेगा, इसे साझा करने के लिए आमतौर पर एक उचित एम 2 संग्रह (नेक्सस / आर्टिफैक्ट) का उपयोग करने के लिए समझ में आता है या यदि आपके पास इनमें से कोई भी नहीं है या एक स्थानीय मैवेन सेट नहीं करना चाहता है संरचित संग्रह और अपने pom में "रिपॉजिटरी" कॉन्फ़िगर करें: स्थानीय:
<repositories>
<repository>
<id>my-local-repo</id>
<url>file://C:/DEV//mymvnrepo</url>
</repository>
</repositories>
दूरस्थ:
<repositories>
<repository>
<id>my-remote-repo</id>
<url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
</repository>
</repositories>
इसके लिए एक सापेक्षिक पथ भी संभव है जिसका उपयोग अंडरएर चर का उपयोग करके किया जा सकता है:
<url>file:${basedir}</url>
<url>file:${basedir}</url>
इसके बजाय बेस यूआरएल के रूप में उपयोग करने की आवश्यकता है ।
POM फ़ाइल में अपना स्थानीय JAR जोड़ें और मावेन बिल्ड में इसका उपयोग करें।
mvn install:install-file -Dfile=path-to-jar -DgroupId=owngroupid -DartifactId=ownartifactid -Dversion=ownversion -Dpackaging=jar
उदाहरण के लिए:
mvn install:install-file -Dfile=path-to-jar -DgroupId=com.decompiler -DartifactId=jd-core-java -Dversion=1.2 -Dpackaging=jar
फिर इसे इस तरह POM में जोड़ें:
एक तरीका यह है कि आप इसे अपने मावेन रिपॉजिटरी मैनेजर (जैसे नेक्सस) में अपलोड करें। वैसे भी खुद का भंडार प्रबंधक रखना अच्छा है।
एक और अच्छा तरीका जो मैंने हाल ही में देखा है, वह है अपनी बिल्ड लाइफसाइकल में मावेन इंस्टॉल प्लगइन को शामिल करना: आप स्थानीय रिपॉजिटरी में फाइल को स्थापित करने के लिए पोम में घोषणा करते हैं। यह एक छोटा लेकिन छोटा ओवरहेड है और इसमें कोई मैनुअल कदम शामिल नहीं है।
http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html
बेशक आप उस फोल्डर में जार जोड़ सकते हैं। लेकिन शायद यह नहीं है कि आप क्या हासिल करना चाहते हैं ...
यदि आपको संकलन के लिए इन जार की आवश्यकता है, तो इस संबंधित प्रश्न की जांच करें: क्या मैं जार को जोड़ने के लिए उन्हें बनाने के बिना 2 निर्माण वर्गपथ जोड़ सकता हूं?
इसके अलावा, इससे पहले कि कोई इसे सुझाए, सिस्टम स्कोप का उपयोग न करें।
एक और दिलचस्प मामला यह है कि जब आप अपनी परियोजना में निजी मावेन जार रखना चाहते हैं। आप परिवर्तनशील निर्भरता को हल करने के लिए मावेन की क्षमताओं को बनाए रखना चाह सकते हैं। समाधान काफी आसान है।
अपनी pom.xml फ़ाइल में निम्न पंक्तियाँ जोड़ें
<properties><local.repository.folder>${pom.basedir}/libs/</local.repository.folder>
</properties>
<repositories>
<repository>
<id>local-maven-repository</id>
<url>file://${local.repository.folder}</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
खोलें .m2 / भंडार फ़ोल्डर और में आयात करने के लिए परियोजना की निर्देशिका संरचना आप चाहते हैं कॉपी libs फ़ोल्डर।
उदाहरण के लिए, आप निर्भरता को आयात करना चाहते हैं
<dependency>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject</artifactId>
<version>1.2.3</version>
</dependency>
बस .m2 / रिपॉजिटरी पर जाएं और आपको निम्न फ़ोल्डर दिखाई देगा
com / mycompany / MyProject / 1.2.3
अपने libs फ़ोल्डर में सब कुछ कॉपी करें (फिर से, .m2 / रिपॉजिटरी के तहत फ़ोल्डर्स सहित ) और आप कर रहे हैं।
मुझे लगता है कि इस समस्या का एक बेहतर समाधान मावेन-इंस्टॉल-प्लगइन का उपयोग करके स्वचालित रूप से स्थापित समय पर फ़ाइलों को स्थापित करना है। इसे मैंने अपने प्रोजेक्ट के लिए सेट किया है।
सबसे पहले, संपत्ति के रूप में पथ (जहां आप स्थानीय .jars संग्रहीत करते हैं) को जोड़ें।
<properties>
<local.sdk>/path/to/jar</local.sdk>
</properties>
फिर, plugins
संकलन करते समय जार स्थापित करने के लिए एक प्लगइन जोड़ें।
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>1</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>com.local.jar</groupId>
<artifactId>appengine-api</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<file>${local.sdk}/lib/impl/appengine-api.jar</file>
</configuration>
</execution>
<execution>
<id>appengine-api-stubs</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>com.local.jar</groupId>
<artifactId>appengine-api-stubs</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<file>${local.sdk}/lib/impl/appengine-api-stubs.jar</file>
</configuration>
</execution>
</executions>
</plugin>
अंत में, निर्भरता में, आप जार जोड़ सकते हैं
<dependency>
<groupId>com.local.jar</groupId>
<artifactId>appengine-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.local.jar</groupId>
<artifactId>appengine-api-stubs</artifactId>
<version>1.0</version>
<scope>test</scope>
</dependency>
अपने प्रोजेक्ट को इस तरह सेट करके, प्रोजेक्ट तब भी बनते रहेंगे जब आप इसे दूसरे कंप्यूटर पर ले जाते हैं (यह देखते हुए कि इसमें प्रॉपर्टी द्वारा निर्दिष्ट पथ में सभी जार फाइलें हैं local.sdk
)।
के लिए groupId
उपयोग एक अद्वितीय नाम सिर्फ यकीन है कि कोई संघर्ष देखते हैं कि बनाने के लिए।
अब जब आप mvn install
या mvn test
स्थानीय जार स्वचालित रूप से जुड़ जाएंगे।
मैं एक कोड साझा करना चाहता हूं जहां आप जार से भरा एक फ़ोल्डर अपलोड कर सकते हैं। यह उपयोगी है जब एक प्रदाता के पास एक सार्वजनिक भंडार नहीं होता है और आपको बहुत सारे पुस्तकालयों को मैन्युअल रूप से जोड़ना होगा। मैंने कॉल करने के बजाय सीधे maven करने के लिए -bat बनाने का निर्णय लिया है क्योंकि यह मेमोरी त्रुटियों से बाहर हो सकता है। यह एक विंडोज़ वातावरण के लिए तैयार किया गया था, लेकिन इसे लिनक्स ओएस के लिए अनुकूलित करना आसान है:
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
public class CreateMavenRepoApp {
private static final String OCB_PLUGIN_FOLDER = "C://your_folder_with_jars";
public static void main(String[] args) throws IOException {
File directory = new File();
//get all the files from a directory
PrintWriter writer = new PrintWriter("update_repo_maven.bat", "UTF-8");
writer.println("rem "+ new Date());
File[] fList = directory.listFiles();
for (File file : fList){
if (file.isFile()){
String absolutePath = file.getAbsolutePath() ;
Manifest m = new JarFile(absolutePath).getManifest();
Attributes attributes = m.getMainAttributes();
String symbolicName = attributes.getValue("Bundle-SymbolicName");
if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject")) {
String[] parts =symbolicName.split("\\.");
String artifactId = parts[parts.length-1];
String groupId = symbolicName.substring(0,symbolicName.length()-artifactId.length()-1);
String version = attributes.getValue("Bundle-Version");
String mavenLine= "call mvn org.apache.maven.plugins:maven-install-plugin:2.5.1:install-file -Dfile="+ absolutePath+" -DgroupId="+ groupId+" -DartifactId="+ artifactId+" -Dversion="+ version+" -Dpackaging=jar ";
writer.println(mavenLine);
}
}
}
writer.close();
}
}
किसी भी IDE से इस मुख्य को चलाने के बाद, update_repo_maven.bat चलाएं।
String symbolicName = attributes.getValue("Bundle-SymbolicName"); if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject"))
इंगित करता है कि केवल कस्टम जार का समर्थन किया जाएगा। कि हमें क्या जरूरत नहीं है: इसके बजाय तीसरे पक्ष के जार का एक गुच्छा। क्या आपके पास सुझाव है कि इस तरह से किसी भी जार को कैसे स्थापित किया जाए ?
यह नए संस्करणों के लिए एक छोटा वाक्यविन्यास है:
mvn install:install-file -Dfile=<path-to-file>
यह काम करता है जब जार अपाचे मावेन द्वारा बनाया गया था - सबसे आम मामला। तब इसमें मेटा-इन डायरेक्टरी के सबफ़ोल्डर में एक pom.xml होगा, जिसे डिफ़ॉल्ट रूप से पढ़ा जाएगा।
स्रोत: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
इस पर भी एक नजर ...
<scope>compile</scope>
मावेन निर्भरता । यह डिफ़ॉल्ट है, लेकिन मैंने कुछ मामलों में स्पष्ट रूप से उस गुंजाइश को स्थापित किया है जो मावेन को स्थानीय भंडार में स्थानीय पुस्तकालयों को खोजने के लिए भी है।
किसी कारण से, मैं जिस वेब एप्लिकेशन का रखरखाव कर रहा हूं, उसमें न तो एलिरेज़ा फताही का समाधान है और न ही जे जे रोमन के समाधान ने सही तरीके से काम किया है। दोनों मामलों में, संकलन ठीक हो जाता है (यह जार देखता है), लेकिन पैकेजिंग जार को युद्ध के अंदर शामिल करने में विफल रहता है।
जिस तरह से मैं इसे बनाने में कामयाब रहा वह जार को लगाकर /src/main/webapp/WEB-INF/lib/
और फिर इसे फतहिस या रोमन के समाधान के साथ जोड़कर किया गया।
ध्यान दें कि स्थानीय रेपो का उपयोग करना आवश्यक नहीं है। यदि यह परियोजना दूसरों के साथ साझा की जाती है, तो बाकी सभी को समस्याएँ और सवाल होंगे जब यह काम नहीं करता है, और जार आपके कंप्यूटर नियंत्रण प्रणाली में भी उपलब्ध नहीं होगा!
हालांकि साझा रेपो सबसे अच्छा जवाब है, अगर आप किसी कारण से ऐसा नहीं कर सकते हैं तो जार को एम्बेड करना स्थानीय रेपो से बेहतर है। स्थानीय-केवल रेपो सामग्री बहुत सारी समस्याओं का कारण बन सकती है, विशेष रूप से समय के साथ।
अपने स्थानीय भंडार पर आप आदेश जारी करके अपने जार को स्थापित कर सकते हैं
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
Mkyoung की वेबसाइट से भी ऐसा करने के लिए इस उपयोगी लिंक का अनुसरण करें। आप उसी के लिए मावेन गाइड भी देख सकते हैं
थर्ड पार्टी जार इंस्टॉल करने के लिए, कृपया नीचे दिए गए कमांड को कॉल करें
mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=path
- mvan इंस्टॉल करें
आप कमांड लाइन में नीचे कोड लिख सकते हैं या यदि आप प्रोजेक्ट पर राइट-क्लिक करके निर्मित बिल्व पत्र का उपयोग कर रहे हैं -> रन अस -> रन कॉन्फ़िगरेशन ... -> बाएं पैनल में दाएं क्लिक करें मावेन बिल्ड -> नया कॉन्फ़िगरेशन -> राइट लिखें लक्ष्य और आधार निर्देशिका में कोड: $ {project_loc: NameOfYourProject} -> चलाएँ
mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true
जहां प्रत्येक को संदर्भित करता है:
<path-to-file>: फ़ाइल को लोड करने का पथ जैसे -> c: \ kaptcha-2.3.jar
<group-id>: वह समूह जिसे फ़ाइल को पंजीकृत किया जाना चाहिए जैसे -> com.google.code
<विरूपण साक्ष्य-आईडी>: फ़ाइल के लिए विरूपण साक्ष्य नाम जैसे -> kaptcha
<संस्करण>: फ़ाइल का संस्करण जैसे -> 2.3
<पैकेजिंग>: फ़ाइल की पैकेजिंग जैसे -> जार
2. स्थापित होने के बाद, बस pom.xml में जार घोषित करता है।
<dependency>
<groupId>com.google.code</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3</version>
</dependency>
चरण 1: अपने में maven-install-plugin
लक्ष्य के साथ कॉन्फ़िगर install-file
करेंpom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-external-non-maven-jar-MWS-Client-into-local-maven-repo</id>
<phase>clean</phase>
<configuration>
<repositoryLayout>default</repositoryLayout>
<groupId>com.amazonservices.mws</groupId>
<artifactId>mws-client</artifactId>
<version>1.0</version>
<file>${project.basedir}/lib/MWSClientJavaRuntime-1.0.jar</file>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
<goals>
<goal>install-file</goal>
</goals>
</execution>
</executions>
</plugin>
file
अपने वास्तविक फ़ाइल पथ के आधार पर पथ को संपादित करना सुनिश्चित करें (अनुशंसित है कि इन बाहरी गैर-मावेन जार को कुछ फ़ोल्डर के अंदर रखा जाए, आइए हम कहते हैं lib
, और इस lib
फ़ोल्डर को अपनी परियोजना के अंदर रखें ताकि परियोजना-विशिष्ट रिश्तेदार पथ का उपयोग करें और सिस्टम को जोड़ने से बचें विशिष्ट पूर्ण पथ।
यदि आपके पास कई बाहरी जार हैं, <execution>
तो उसी के भीतर अन्य जार के लिए दोहराएं maven-install-plugin
।
चरण 2: एक बार जब आप maven-install-plugin
अपनी pom.xml
फ़ाइल में ऊपर दिखाए अनुसार कॉन्फ़िगर कर लेते हैं, तो आपको इन जार pom.xml
को हमेशा की तरह उपयोग करना होगा:
<dependency>
<groupId>com.amazonservices.mws</groupId>
<artifactId>mws-client</artifactId>
<version>1.0</version>
</dependency>
ध्यान दें कि maven-install-plugin
केवल आपके बाहरी जार को आपके स्थानीय .m2
मावेन भंडार में कॉपी करता है। बस। यह स्वचालित रूप से आपकी परियोजना के लिए मावेन निर्भरता के रूप में इन जार को शामिल नहीं करता है।
यह एक मामूली बात है, लेकिन कभी-कभी याद करना आसान होता है।
मेरे pom.xml में निर्भरता के एक सेट के लिए एक ही त्रुटि थी। बाहर निर्भरता के संस्करणों को pom.xml में निर्दिष्ट नहीं किया गया था और मूल रिपॉजिटरी में उल्लेख किया गया था। किसी कारण से संस्करण विवरण इस रेपो के साथ समन्वयित नहीं हो रहा था। इसलिए मैंने मैन्युअल रूप से टैग का उपयोग करके संस्करणों में प्रवेश किया और यह एक आकर्षण की तरह काम किया। माता-पिता में संस्करणों को देखने और यहां निर्दिष्ट करने के लिए बहुत कम समय की आवश्यकता होती है। लेकिन यह सिर्फ उन जार के लिए किया जा सकता है जो कलाकृतियों की त्रुटि दिखा रहे हैं और यह काम करता है। आशा है कि यह किसी की मदद करता है।
Apache Maven 3.5.4 में, मुझे दोहरा उद्धरण जोड़ना था। दोहरे उद्धरण के बिना मेरे लिए काम नहीं किया गया था।
उदाहरण: mvan install: install-file "-Dfile = location to jar file" "-DgroupId = group id" "-DartifactId = विरूपण साक्ष्य आईडी" "-Dversion = संस्करण" "-Dpack_ = = पैकेज प्रकार"
yourproject
+- pom.xml
+- src
yourproject
+- pom.xml
+- src
+- repo
mvn deploy:deploy-file -Durl=file:///pathtoyour/repo -Dfile=your.jar -DgroupId=your.group.id -DartifactId=yourid -Dpackaging=jar -Dversion=1.0
mvn install:install-file -Dfile=/path-to-your-jar-1.0.jar -DpomFile=/path-to-your-pom-1.0.pom
<repositories>
<!--other repositories if any-->
<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
</repository>
</repositories>
<dependency>
<groupId>com.groupid</groupId>
<artifactId>myid</artifactId>
<version>1.0</version>
</dependency>
इस उपयोगकर्ता केवल उपयोगकर्ताओं के लिए है:
यदि आप ग्रहण का उपयोग कर रहे हैं, तो जार को लिब / में रखें, जार नाम पर राइट क्लिक करें और "ऐड टू बिल्ड पाथ" पर क्लिक करें। ग्रहण एक "संदर्भित पुस्तकालय" बनाएगा और आपके लिए जार रखेगा
इसने मेरे लिए कार्यक्रम में तुरंत जार के आयात को हल किया
.classpath
, लेकिन आपके mvn package
मावेन बिल्ड ब्रॉकिट होगा एक बार जब आप उस निर्भरता का उपयोग करना शुरू कर देंगे, क्योंकि मावेन की कोई परिभाषा नहीं है, और यह केवल में होना चाहिएpom.xml