আমি কীভাবে সরাসরি আমার প্রকল্পের লাইব্রেরি উত্সগুলিতে স্থানীয় জার ফাইলগুলি (এখনও মাভেন সংগ্রহস্থলের অংশ না) যুক্ত করব?
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>
হালনাগাদ
নতুন প্রকাশে এই বৈশিষ্ট্যটিকে অবচিত হিসাবে চিহ্নিত করা হয়েছে তবে এখনও কাজ করছে এবং এখনও সরানো হয়নি (আপনি কেবল ম্যাগন শুরুর সময় লগটিতে সতর্কতা দেখেন)। এই https://issues.apache.org/jira/browse/MNG-6523 সম্পর্কে মার্ভেন গ্রুপে একটি ইস্যু উত্থাপিত হয়েছে (আপনি কিছু অংশে কেন এই বৈশিষ্ট্যটি সহায়ক তা আপনি অংশ নিতে পারেন এবং বর্ণনা করতে পারেন) । আমি আশা করি এই বৈশিষ্ট্যটি সেখানেই থাকবে!
তুমি কি আমাকে জিজ্ঞাসা করা হয় তাহলে, যতদিন বৈশিষ্ট্য মুছে ফেলা না হয়, আমি এই ব্যবহার করতে কেবল নির্ভরতা করা এক দুষ্টু বয়াম ফাইল আমার প্রকল্প যা সংগ্রহস্থলের মধ্যে মাপসই করা হয় না। যদি এই বৈশিষ্ট্যটি সরানো হয় তবে ভাল, এখানে প্রচুর ভাল উত্তর রয়েছে যা আমি পরে থেকে বেছে নিতে পারি!
artifactId
এবং groupId
চারপাশের কুপথ?
প্রথমত, আমি একজন অনামী স্ট্যাক ওভারফ্লো ব্যবহারকারীকে এই উত্তরটির জন্য কৃতিত্ব দিতে চাই - আমি নিশ্চিত যে আমি এখানে আগে একই রকম উত্তর দেখেছি - তবে এখন আমি এটি খুঁজে পাচ্ছি না।
নির্ভরতা হিসাবে স্থানীয় জেআর ফাইল থাকার সর্বোত্তম বিকল্প হ'ল স্থানীয় মাভেন সংগ্রহশালা তৈরি করা। এর মধ্যে একটি পোম ফাইল সহ সঠিক ডিরেক্টরি কাঠামো ব্যতীত এ জাতীয় সংগ্রহস্থল আর কিছু নয়।
আমার উদাহরণের জন্য: আমার ${master_project}
অবস্থানের উপরে আমার প্রকল্পটি রয়েছে এবং সাবপ্রজেক্ট 1 চালু ${master_project}/${subproject1}
।
তারপরে আমি এখানে একটি মাভেন সংগ্রহশালা তৈরি করব:
${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>
নির্ভরতা অন্য কোনও সংগ্রহস্থলের হিসাবে নির্দিষ্ট করা যেতে পারে। এটি আপনার পোম সংগ্রহশালাটিকে স্বাধীন করে তোলে। উদাহরণস্বরূপ, একবার কাঙ্ক্ষিত জেআরটি মাভেন সেন্ট্রালে পাওয়া গেলে আপনার এটি কেবল আপনার স্থানীয় রেপো থেকে মুছতে হবে এবং এটি ডিফল্ট রেপো থেকে টানা হবে।
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.servicebinder</artifactId>
<version>0.9.0-SNAPSHOT</version>
</dependency>
সর্বশেষ তবে সবচেয়ে কম কাজটি হ'ল -DlocalRepositoryPath স্যুইচ ব্যবহার করে স্থানীয় সংগ্রহস্থলে JAR ফাইল যুক্ত করা:
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
একবার জার ফাইলটি ইনস্টল হয়ে গেলে, আপনার ম্যাভেন রেপো একটি কোড সংগ্রহের প্রতিশ্রুতিবদ্ধ হতে পারে এবং পুরো সেটআপটি সিস্টেমটি স্বতন্ত্র। ( গিটহাবের কার্যকারী উদাহরণ )।
আমি সম্মত হলাম যে সোর্স কোড রেপোতে জার্স প্রতিশ্রুতিবদ্ধ হওয়া ভাল অনুশীলন নয়, তবে বাস্তব জীবনে দ্রুত এবং নোংরা সমাধানগুলি আপনি প্রকাশ করতে পারবেন না এমন একটি জার হোস্ট করার জন্য সম্পূর্ণ বদ্ধ নেক্সাস রেপোর চেয়ে কখনও কখনও ভাল।
${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
পোম ফাইলে ব্যবহার করুন:
<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 সংরক্ষণাগার (নেক্সাস / আর্টিফ্যাক্টরি) ব্যবহার করা বা আপনার যদি এর কোনওটি না থাকে বা একটি স্থানীয় মেভেন সেট আপ করতে না চান তা বোঝায় makes কাঠামোগত সংরক্ষণাগার এবং আপনার পোমে একটি "সংগ্রহস্থল" কনফিগার করুন: স্থানীয়:
<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 ফাইলে আপনার নিজস্ব স্থানীয় জেআর যুক্ত করুন এবং এটি মেভেন বিল্ডে ব্যবহার করুন।
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 / সংগ্রহস্থল ফোল্ডার এবং আমদানী করার প্রকল্প নির্দেশিকা কাঠামো যদি আপনি চান কপি লিব ফোল্ডার।
যেমন ধরুন আপনি নির্ভরতা আমদানি করতে চান
<dependency>
<groupId>com.mycompany.myproject</groupId>
<artifactId>myproject</artifactId>
<version>1.2.3</version>
</dependency>
শুধু .m2 / সংগ্রহস্থল যান এবং আপনি নীচের ফোল্ডারটি দেখতে পাবেন
কম / mycompany / myproject / 1.2.3
আপনার লিবস ফোল্ডারে সমস্ত কিছু অনুলিপি করুন (আবার, .m2 / সংগ্রহস্থলের অধীন ফোল্ডারগুলি সহ ) এবং আপনার কাজ শেষ হয়েছে।
আমি মনে করি এই সমস্যাটির আরও ভাল সমাধান হ'ল ম্যাভেন-ইনস্টল-প্লাগইন ব্যবহার করা ইনস্টল করার সময় ফাইলগুলি স্বয়ংক্রিয়ভাবে ইনস্টল করতে। এইভাবে আমি আমার প্রকল্পের জন্য এটি সেট আপ করেছি।
প্রথমে একটি সম্পত্তি হিসাবে পাথ (যেখানে আপনি স্থানীয়। জারগুলি সঞ্চয় করেন) যুক্ত করুন।
<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
স্থানীয় জারগুলি স্বয়ংক্রিয়ভাবে যুক্ত হবে।
আমি এমন একটি কোড ভাগ করতে চাই যেখানে আপনি জারে পূর্ণ ফোল্ডার আপলোড করতে পারেন। এটি কার্যকর যখন কোনও সরবরাহকারীর সর্বজনীন ভাণ্ডার না থাকে এবং আপনাকে ম্যানুয়ালি প্রচুর গ্রন্থাগার যুক্ত করতে হবে। আমি সরাসরি ম্যাভেনকে কল করার পরিবর্তে একটি .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();
}
}
কোনও আইডিই থেকে এই মেইনটি চালানোর পরে, আপডেট_রেপো_ম্যাভেন.ব্যাট চালান।
String symbolicName = attributes.getValue("Bundle-SymbolicName"); if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject"))
মনে হচ্ছে যে কেবলমাত্র কাস্টম জারগুলিই সমর্থন করবে। আমাদের যা প্রয়োজন তা নয়: পরিবর্তে তৃতীয় পক্ষের জারের একগুচ্ছ। এইভাবে কোনও জারটি কীভাবে ইনস্টল করবেন আপনার পরামর্শ আছে ?
এটি নতুন সংস্করণগুলির জন্য একটি সংক্ষিপ্ত বাক্য গঠন:
mvn install:install-file -Dfile=<path-to-file>
এটি কার্যকর হয় যখন জেআরটি অ্যাপাচি মাভেন দ্বারা নির্মিত হয়েছিল - সবচেয়ে সাধারণ ক্ষেত্রে। তারপরে এটিতে মেটা-আইএনএফ ডিরেক্টরিটির একটি সাবফোল্ডারে একটি pom.xML থাকবে, যা ডিফল্টরূপে পড়বে read
সূত্র: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
এছাড়াও একবার দেখুন ...
<scope>compile</scope>
মাভেন নির্ভরতা । এটি ডিফল্ট তবে আমি কিছু ক্ষেত্রে স্পষ্টভাবে সেই সুযোগটি সেট করে খুঁজে পেয়েছি স্থানীয় সংগ্রহশালায় স্থানীয় লাইব্রেরিগুলি খুঁজে পাওয়ার জন্য মাভেনও।
কোনও কারণে, ওয়েব অ্যাপ্লিকেশনটিতে আমি রক্ষণাবেক্ষণ দিচ্ছি, আলিরাজা ফাত্তাহির সমাধান বা জেজে রোমানের সমাধান সঠিকভাবে কাজ করে নি worked উভয় ক্ষেত্রেই সংকলনটি ঠিকঠাক হয়ে যায় (এটি জারটি দেখে) তবে প্যাকেজিংটি যুদ্ধের মধ্যে জারটি অন্তর্ভুক্ত করতে ব্যর্থ হয়।
আমি এটির কাজটি চালিয়ে যাওয়ার একমাত্র উপায় /src/main/webapp/WEB-INF/lib/
হ'ল পাত্রটি রেখে এবং তারপরে ফাত্তাহিসের বা রোমানের সমাধানের সাথে একত্রিত করে।
মনে রাখবেন যে স্থানীয় রেপো ব্যবহার করা কোনও ভাল ধারণা নয়। যদি এই প্রকল্পটি অন্যের সাথে ভাগ করা হয় তবে কাজ না করলে অন্য সবার সমস্যা এবং প্রশ্ন থাকবে এবং আপনার উত্স নিয়ন্ত্রণ সিস্টেমে জারটি উপলব্ধ হবে না!
যদিও ভাগ করা রেপো সর্বোত্তম উত্তর, যদি আপনি কোনও কারণে এটি না করতে পারেন তবে জার এম্বেড করা স্থানীয় রেপোর চেয়ে ভাল। স্থানীয়-কেবল রেপো সামগ্রীগুলি বিশেষত সময়ের সাথে সাথে প্রচুর সমস্যা তৈরি করতে পারে।
আপনার স্থানীয় সংগ্রহস্থলে আপনি আদেশগুলি জারি করে আপনার জারটি ইনস্টল করতে পারেন
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
এমকিউংয়ের ওয়েবসাইট থেকে এটি করতে এই দরকারী লিঙ্কটি অনুসরণ করুন । আপনি এটির জন্য মাভেন গাইডও চেক করতে পারেন
তৃতীয় পক্ষের জারটি ইনস্টল করতে, দয়া করে নীচের মতো আদেশটি কল করুন
mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=path
- এমভিএন ইনস্টল করুন
আপনি কমান্ড লাইনে নীচে কোডটি লিখতে পারেন বা যদি আপনি গ্রিপস বিল্টিন মেভেন ব্যবহার করছেন তবে প্রকল্পে ডান ক্লিক করুন -> হিসাবে চালান -> রান করুন কনফিগারেশন ... -> বাম প্যানেলে মাভেন বিল্ড -> নতুন কনফিগারেশন -> এ রাইট ক্লিক করুন লক্ষ্যসমূহ এবং বেস ডিরেক্টরিতে কোড: $ {প্রজেক্ট_লোক: নামঅফফয়রপ্রজেক্ট} -> চালান
mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true
যেখানে প্রতিটি উল্লেখ করে:
<পাথ টু ফাইল>: ফাইলটি লোড করার পথ যেমন -> সি: \ ক্যাপচা-২.৩.জার
<গ্রুপ-আইডি>: যে গ্রুপটি ফাইলটি যেমন -> com.google.code এর অধীনে নিবন্ধিত হওয়া উচিত
<আর্টিফ্যাক্ট-আইডি>: ফাইলের জন্য শিল্পী নাম যেমন -> কাপ্তচা
<সংস্করণ>: ফাইলটির সংস্করণ যেমন -> 2.3
<প্যাকেজিং>: ফাইলের প্যাকেজিং যেমন -> জার
2. ইনস্টল হওয়ার পরে, কেবল পম.এক্সএমএলে জার ঘোষণা করে।
<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- র নির্ভরতাগুলির সেটগুলির জন্য আমার একই ত্রুটি ছিল যে পম.এক্সএমএলে নির্ভরতার সংস্করণগুলি নির্দিষ্ট করা হয়নি এবং প্যারেন্ট রিপোজিটরিতে উল্লেখ করা হয়েছিল। কিছু কারণে সংস্করণ বিবরণগুলি এই রেপোর সাথে সিঙ্ক হচ্ছে না। অতএব আমি ট্যাগটি ব্যবহার করে ম্যানুয়ালি সংস্করণগুলিতে প্রবেশ করেছি এবং এটি একটি কবজির মতো কাজ করেছে। পিতামাতার সংস্করণগুলি খুঁজতে এবং এখানে নির্দিষ্ট করার জন্য খুব অল্প সময়ের প্রয়োজন। তবে এটি কেবল জারগুলির জন্য করা যেতে পারে যা আর্টিফ্যাকটিড ত্রুটি দেখায় এবং এটি কাজ করে। আশা করি এটি কাউকে সাহায্য করবে।
অ্যাপাচি মাভেন ২.৩.৪ এ আমাকে দ্বিগুণ উদ্ধৃতি যোগ করতে হয়েছিল। দ্বিগুণ উদ্ধৃতি ব্যতীত এটি আমার পক্ষে কাজ করা হয়নি।
উদাহরণ: এমভিএন ইনস্টল: ইনস্টল-ফাইল "-ডফিল = জার ফাইলের জন্য অবস্থান" "-DgroupId = গ্রুপ আইডি" "-ডার্টিফেক্টআইডি = আর্টিফ্যাক্ট আইডি" "-দলান্তর = সংস্করণ" "-ডপ্যাকেজিং = প্যাকেজ টাইপ"
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>
এই উত্তরটি কেবলমাত্র ব্যবহারকারীদের জন্য রয়েছে:
আপনি যদি Eclipse ব্যবহার করছেন, জারটি lib / এ রাখুন, জারের নামটিতে ডান ক্লিক করুন এবং "পথ তৈরিতে যুক্ত করুন" এ ক্লিক করুন। গ্রহন একটি "রেফারেন্সযুক্ত গ্রন্থাগার" তৈরি করবে এবং আপনার জন্য জারটি রাখবে
এটি আমার জন্য প্রোগ্রামে এখনই জারের আমদানি সমাধান করেছে
.classpath
, তবে mvn package
আপনি যখন সেই নির্ভরতা ব্যবহার শুরু করলেন তখন আপনার pom.xml