আমি কীভাবে একটি কমান্ড লাইনে একটি নির্দিষ্ট মাভেন শিল্পকলা ডাউনলোড করতে পারি?


168

আমি এর মাধ্যমে একটি আর্টিক্ট ইনস্টল install:install-fileকরতে পারি, তবে কীভাবে আমি একটি শিল্পকর্ম ডাউনলোড করতে পারি?

উদাহরণ স্বরূপ:

mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST

11
সাবধান থাকুন যে ডকুমেন্টেশন 'repositoryUll' বলার পরেও প্লাগইন 'repoUll' চায়। এটি আমার মতো করে পাগল চালাতে পারে!
জাকম্যাক

দস্তাবেজগুলি ( maven.apache.org/plugins/maven-d dependency-plugin / get-mojo.html ) উভয় এক্সএমএল প্যারাম (<repositoryUrl> ... </repositoryUrl>) এবং কমান্ড-লাইন ব্যবহারকারী-বৈশিষ্ট্যগুলি (এমভিএন ..) দেখায় । -ড্রেপোআরল = "...")। এই বিশেষ উদাহরণটিকে অবহেলা করা হয়েছে, সুতরাং কোনও উদ্বেগ নেই; এখন এটি এখন সমানভাবে দূরবর্তী স্থানসমূহ (উভয় ব্যবহারের ক্ষেত্রে); তবে মনে রাখবেন যে "গন্তব্য" প্যারামিটারটি ব্যবহারকারীর সম্পত্তি "-Ddest = ..."; যেমন => এমভিএন org.apache.maven.plugins: মাভেন-নির্ভরতা-প্লাগইন: 2.5.1: get -DremoteRepositories = repo.maven.apache.org -Dartifact = org.apache.ant: ant: 1.8.1 -ডেস্ট = ant-1.8.1.jar (ফলাফল: বর্তমান ডিরেক্টরিতে ant-1.8.1.jar)
মাইকেল 25

উত্তর:


182

আপনি ম্যাভেন নির্ভরতা প্লাগইনটি ব্যবহার করতে পারেন যা dependency:getসংস্করণ ২.১ থেকে দুর্দান্ত লক্ষ্য রয়েছে। কোনও পোমের দরকার নেই, কমান্ড লাইনে সবকিছু ঘটে।

dependency:getলক্ষ্যটি সন্ধান করার জন্য , আপনাকে স্পষ্টভাবে মভেনকে ২.১ সংস্করণটি ব্যবহার করতে হবে, অর্থাত আপনার সংস্করণ সহ প্লাগইনের পুরোপুরি যোগ্যতাসম্পন্ন নাম ব্যবহার করা দরকার:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
    -DrepoUrl=url \
    -Dartifact=groupId:artifactId:version

আপডেট: ম্যাভেনের পুরানো সংস্করণগুলির সাথে (২.১ এর পূর্বে), dependency:getআপনার প্লেনের কোনও প্রদত্ত সংস্করণ ব্যবহারের জন্য মেভেনের অনুলিপি জোর করে সাধারণভাবে (সম্পূর্ণরূপে যোগ্যতাসম্পন্ন নাম এবং সংস্করণ ব্যবহার না করে ) চালানো সম্ভব ।

ইহা এভাবে করা যাবে:

1. <settings>আপনার ~/.m2/settings.xmlফাইলের উপাদানটির মধ্যে নিম্নলিখিত লাইনটি যুক্ত করুন:

<usePluginRegistry>true</usePluginRegistry>

2. ~/.m2/plugin-registry.xmlনিম্নলিখিত বিষয়বস্তু সহ ফাইল যুক্ত করুন :

<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <useVersion>2.1</useVersion>
      <rejectedVersions/>
    </plugin>
  </plugins>
</pluginRegistry>

তবে এটি ম্যাভেন ২.১ / ২.২ এর সাথে আর কাজ করবে বলে মনে হচ্ছে না। প্রকৃতপক্ষে, প্লাগিন রেজিস্ট্রির পরিচিতি অনুসারে , এর বৈশিষ্ট্যগুলি plugin-registry.xmlনতুনভাবে ডিজাইন করা হয়েছে (বহনযোগ্যতার জন্য) এবং প্লাগইন রেজিস্ট্রি বর্তমানে মাভেন 2 এর মধ্যে একটি আধা-সুপ্ত অবস্থায় রয়েছে । সুতরাং আমি মনে করি আমাদের আপাতত দীর্ঘ নাম ব্যবহার করতে হবে (পম ছাড়াই প্লাগইন ব্যবহার করার সময়, যা পিছনের ধারণাটি dependency:get) idea


1
হ্যাঁ, এবং আমি নির্ভরতা ব্যবহার করে ঠিক একই রেজোলিউশন পেয়েছি: লক্ষ্য অর্জন করুন। এমভিএন নির্ভরতা: get -Dartifact = org.apache.archiva: সংরক্ষণাগার-ওয়েব অ্যাপ: সর্বশেষ: war -DrepoUrl = repository.sonatype.org/content/repositories/ কেন্দ্রিয় একমাত্র অসুবিধে হ'ল আমাকে অবশ্যই একটি repoUll বিকল্প সরবরাহ করতে হবে। আপনার তথ্যটি সত্যিই সহায়তা করে, আমি এমভিএন ২.২.১ ব্যবহার করছি (আরডিবিয়ান -১) এবং আমি প্লাগইনরেজিস্ট্রিটি স্পর্শ করিনি। ধন্যবাদ।
Xiè Jìléi

2
এই "পেতে" লক্ষ্যটি আবার "কেবলমাত্র কাজ করবে" বলে মনে হয় (অতিরিক্ত কোনও কনফিগারেশন / হ্যাকিংয়ের প্রয়োজন নেই; প্লাগইন 2.5.1, এমভিএন 3.0.4): = উদাহরণ => এমভিএন org.apache.maven.plugins: maven-dependency-પ્લગઇન: 2.5.1: get -DremoteRepositories = repo.maven.apache.org -Dartifact = org.apache.ant: ant: 1.8.1 -Ddest = ant-1.8.1.jar
michael

পেতে এবং ইনস্টল করার মধ্যে পার্থক্য কী? তারা দুজনেই কি আপনার স্থানীয় মেভেন রেপোতে নিয়ে আসে না? - সম্পাদনা: অপেক্ষা করুন, না, আমি এখন এটি পেতে; আপনার স্থানীয় ডিপগুলি স্থানীয় এম 2 রেপোতে অনুলিপি করার জন্য ইনস্টলটি হ'ল , দূরবর্তী থেকে এনে আনুন
Chris2048

4
দেখা গেল, শুধু পরিশেষে যোগ :jar:sourcesকরার হস্তনির্মিত বস্তু দেখতে stackoverflow.com/a/31109185/537554
ryenus

1
মাভেনের নতুন সংস্করণগুলির সাথে (উদাহরণস্বরূপ 3.6.0) আপনি এখনও এটি দিয়ে করতে পারেনmvn dependency:get -Dartifact=group-id:artefact-id:version
স্ক্রুটারি

93

মাভেন নির্ভরতা প্লাগইনের সর্বশেষতম সংস্করণ (২.৮) সহ , মাভেন সেন্ট্রাল রিপোজিটরি থেকে একটি নিদর্শন ডাউনলোড করা যেমন সহজ:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]

যেখানে groupId:artifactId:versionইত্যাদি ম্যাভেন স্থানাঙ্ক হয়

উদাহরণস্বরূপ, ম্যাভেন ২.০.৯, মাভেন ২.২.১, এবং ম্যাভেন 3.0.০.৪ এর সাথে পরীক্ষিত:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=org.hibernate:hibernate-entitymanager:3.4.0.GA:jar:sources

( প্রথম স্থানে তাঁর দুর্দান্ত উত্তর দেওয়ার জন্য পাস্কাল থিভেন্টকে ধন্যবাদ । আমি আরও একটি উত্তর যুক্ত করছি, কারণ এটি কোনও মন্তব্যে ফিট করে না এবং এটি সম্পাদনার পক্ষে খুব ব্যাপক হবে))


আমি এটি ম্যাভেন আরকিটাইপ ডাউনলোড করতে ব্যবহার করেছি। আপনি যদি প্রক্সিটির পিছনে থাকেন এবং গ্রহন নিয়ে কাজ করেন যা আপনি ম্যাসেজ আর্কাইটিপগুলি সনাক্ত করতে নিবন্ধন করতে ব্যর্থ হন আপনি সেটিংস এক্সএমএলতে প্রক্সি কনফিগার করেছেন।
অ্যাসুইন

mvn org.apache.maven.plugins: maven-depend depend-plugins: 2.8: get -Dartifact = org.apache.maven.archetyype: maven-archetype-webapp: 1.0: jar
Acewin

আপনি কি jar:sourcesবলতে পারবেন / মানে কি ? আপনার "জার" নির্দিষ্ট করার দরকার নেই কেন? এবং "উত্স" এর অর্থ কি এটি নিদর্শনগুলির জন্য প্রয়োজনীয় অতিরিক্ত নির্ভরতা ডাউনলোড করবে?
red888

"জার" হ'ল প্যাকেজিং ধরণ, "উত্স" শ্রেণিবদ্ধ হয়। একটি নির্ভরতা দেওয়া (উদাহরণস্বরূপ, হাইবারনেট-কোর ), একাধিক আর্টিক্যাক্ট থাকতে পারে। প্রায়শই, সেখানে রয়েছে: 1. বাইনারি-কেবলমাত্র গ্রন্থাগার, ২ sources, একটি জেআর ফাইল যা কেবল জাভা উত্স ধারণ করে, ৩. javadoc, কেবলমাত্র এপিআই ডক্স সহ একটি জেআর ফাইল। আরও দেখুন: ম্যাভেন ডিফল্ট আর্টিক্ট হ্যান্ডলারগুলি
ড্যানিলো পিয়াজালুঙ্গা

[:classifier]সঠিকভাবে কীভাবে ব্যবহার করতে হয় সে সম্পর্কে স্পষ্ট করে দেওয়ার বিষয়ে ধন্যবাদ , যদি আমার কাছে এসিএমলিবি প্লাগইন তৈরি হয় তবে আমি জিপ ফাইল তৈরি করতে পারি যা আমি ডাউনলোড করতে চাই।
jonashackt

43

শেষ পর্যন্ত ম্যাভেন ৩.১.১ এর সাথে "উপাদান.জার" নামক একটি শিল্পকর্মের সর্বশেষ সংস্করণটি ডাউনলোড করার জন্য আমার পক্ষে কী কাজ করেছে (অন্যান্য পরামর্শগুলি বেশিরভাগ ক্ষেত্রে বিশ্বাস করি না কেন মেন সংস্করণ পরিবর্তনের কারণে)

এটি প্রকৃতপক্ষে ফাইলটি ডাউনলোড করে এবং স্থানীয় ওয়ার্কিং ডিরেক্টরিতে এটি অনুলিপি করে

বাশ থেকে:

mvn dependency:get \
    -DrepoUrl=http://.../ \
        -Dartifact=com.foo.something:component:LATEST:jar \
        -Dtransitive=false \
        -Ddest=component.jar \

দুর্দান্ত, ধন্যবাদ! আমার ইভেন্টটির দরকার নেই -DrepoUrl, আমার ধারণা এটি যাইহোক আমার পোম থেকে বোঝানো হয়েছিল। এছাড়াও আমি ব্যবহার করেননি -Ddestযেমন আমি আসলে করেনি এটা নিয়মিত করতে ডাউনলোড করতে চান .m2নির্দেশিকা।
ইয়ার

15
destপরামিতি অবচিত এবং একজন invokation সঙ্গে প্রতিস্থাপিত হতে পারে copyপরে getযেমন: mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.(এই ক্ষেত্রে কাজ ডিরেক্টরির মধ্যে বয়াম স্থাপন)।
জ্যাকব রায়হলে

@JacobRaihle তারপর আমি pom.xml ছাড়া ফাইল ডাউনলোড করতে পারবেন না, নিম্নলিখিত ত্রুটি পেয়ে: Goal requires a project to execute but there is no POM in this directory
অ্যাথলান

2
আমি মনে করি @ অ্যাথলান নো-পম সমর্থন কোনও নতুন বৈশিষ্ট্য হতে পারে। আজকাল আমি কেবল চালাতে পারি mvn dependency:copy( dependency:getপ্রথম ছাড়া )
জ্যাকব রায়হলে

26

কীভাবে আর্টিফ্যাক্ট বাইনারি পাওয়া যায় সে সম্পর্কে প্যাস্কাল থিভেন্টের উত্তরটি হ'ল, তবে আর্টিফ্যাক্ট উত্সগুলিও পাওয়ার জন্য আমরা ব্যবহার করতে পারি:

mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources

যেমন

mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources

এটি কাজ করে কারণ artifactপ্যারামিটারটি আসলে থাকে groupId:artifactId:version[:packaging][:classifier]। কেবল প্যাকেজিং এবং শ্রেণিবদ্ধকরণ .চ্ছিক।

সঙ্গে jarহিসাবে প্যাকেজিং এবং sourcesযেমন ক্লাসিফায়ার , ম্যাভেন নির্ভরতা প্লাগইন আমরা সূত্র বয়াম, না হস্তনির্মিত বস্তু বয়াম জন্য বলছি বুঝতে পারে।

দুর্ভাগ্যক্রমে আপাতত উত্সের জার ফাইলগুলি ট্রানজিটিভলি ডাউনলোড করা যায় না, যা বোঝা যায় না, তবে আদর্শিকভাবে আমি বিশ্বাস করি যে এটি downloadSourcesগ্রাহ্যগ্রহণ গ্রাহক প্লাগইনের মতো বিকল্পটিকেও সম্মান করতে পারে।


17

কেউ নির্ভরতা ব্যবহার করতে পারে: অনুলিপি ( http://maven.apache.org/plugins/maven-d dependency -plugin /copy- mojo.html ) যা প্লাগইন কনফিগারেশন বিভাগে সংজ্ঞায়িত শিল্পকর্মগুলির একটি তালিকা নেয় এবং সেগুলি একটি নির্দিষ্ট স্থানে অনুলিপি করে , তাদের নাম পরিবর্তন করে বা পছন্দসই সংস্করণটি সরিয়ে ফেলা। এই লক্ষ্যটি রিমোট রিপোজিটরিগুলি থেকে নিদর্শনগুলি সমাধান করতে পারে যদি সেগুলি স্থানীয় সংগ্রহস্থল বা চুল্লির মধ্যে না থাকে।

প্লাগইনটির সমস্ত বৈশিষ্ট্য মেভেন সিএলআইতে ব্যবহার করা যায়নি। "ব্যবহারকারী সম্পত্তি:" বৈশিষ্ট্যযুক্ত বৈশিষ্ট্য নির্দিষ্ট করা যেতে পারে। নীচের উদাহরণে আমি আমার টেম্প ফোল্ডারে জুনিট ডাউনলোড করছি এবং জার ফাইলটি থেকে ভেনশনটি সরিয়ে নিচ্ছি।

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true

যেখানে আর্টিফ্যাক্ট = জুনিট: জুনিট: 4.11 হ'ল মেভেন কোঅর্ডিনেটস। এবং আপনি আর্টিফ্যাক্যাটকে গ্রুপআইড হিসাবে নির্দিষ্ট করেছেন: আর্টিফ্যাক্টআইডি: সংস্করণ [: প্যাকেজিং [: শ্রেণিবদ্ধ]]

( প্রথম স্থানটিতে তার https://stackoverflow.com/a/18632876/2509415 সরবরাহ করার জন্য পাস্কাল থিভেন্টকে ধন্যবাদ । আমি অন্য উত্তর যুক্ত করছি)


11

এক লাইনার এমভিএন ছাড়াই সর্বশেষ মেভেন আর্টিফ্যাক্ট ডাউনলোড করতে:

curl -O -J -L  "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"

3
Downvoted। এই সমাধানটি কেবলমাত্র একটি নির্দিষ্ট সংগ্রহস্থল পণ্য নিয়ে কাজ করে বলে মনে হচ্ছে।
মার্টন স্ট্রাস

1
Nexus 2.x এর সাথে দুর্দান্ত কাজ করেছেন, 3.x (এখনও) এর সাথে কাজ করে না
এইচডিভে

কার্ল: বিকল্প -J অজানা
xuehui

2

অফিসিয়াল ডকুমেন্টেশন থেকে ব্যবহার:

https://maven.apache.org/plugins/maven-dependency-plugin/usage.html#dependency:get

আমার ক্ষেত্রে, নীচের উত্তর দেখুন:

mvn dependency:get -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false
mvn dependency:copy -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false -DoutputDirectory=$6

#mvn dependency:get -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false
#mvn dependency:copy -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false -DoutputDirectory=.

নির্দিষ্ট আর্টফ্যাক্টটি ডাউনলোড করতে "এমভিএন নির্ভরতা: get" কমান্ডটি ব্যবহার করুন এবং "এমভিএন নির্ভরতা: অনুলিপি" কমান্ডটি ব্যবহার করুন ডাইর্ট ডিয়ারের জন্য ডাউনলোডকৃত শিল্পকলাটি অনুলিপি করতে "-ডুটপুট ডিরেক্টরি"


1

ম্যাভেন 3.6 ব্যবহার করে এএসএম -7 পাওয়ার জন্য এখানে একটি উদাহরণ রয়েছে:

mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar

বা আপনি এখান থেকে জারটি ডাউনলোড করতে পারেন: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm এবং তারপরে

mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar

0

আদেশ:

mvn install:install-file 

সাধারণত আপনার স্থানীয় সংগ্রহস্থলে নিদর্শনগুলি ইনস্টল করে, তাই আপনার এটি ডাউনলোড করার দরকার নেই। তবে, আপনি যদি অন্যদের সাথে আপনার নিদর্শনটি ভাগ করতে চান তবে আপনাকে খোদাই করা শিল্পটি একটি কেন্দ্রীয় ভান্ডারটিতে স্থাপন করতে হবে আরও বিশদ জানতে ডিপ্লাই প্লাগইন দেখুন।

অতিরিক্তভাবে আপনার POM এর উপর নির্ভরতা যুক্ত করা আপনার প্রকল্পটি তৈরি করার সময় আপনার প্রয়োজনীয় কোনও তৃতীয় পক্ষের নিদর্শনগুলি নিয়ে আসবে। অর্থাৎ এটি কেন্দ্রীয় সংগ্রহশালা থেকে নিদর্শনগুলি ডাউনলোড করবে।


0

LATEST হ্রাস করা হয়েছে, পরিসীমা দিয়ে চেষ্টা করুন [,)

./mvnw org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \  
-DremoteRepositories=repoId::default::https://nexus/repository/maven-releases/ \
"-Dartifact=com.acme:foo:[,)"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.