আমাকে ব্যাশ ব্যবহার করে "some.jar" থেকে MANIFEST.MF maven ম্যানিফেস্ট ফাইলটি পড়তে হবে
উত্তর:
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-q
আনজিপ প্রোগ্রাম থেকে ভার্বোজ আউটপুট দমন করবে-c
stdout থেকে নিষ্কাশন করা হবেউদাহরণ:
$ unzip -q -c commons-lang-2.4.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_13-119 (Apple Inc.)
Package: org.apache.commons.lang
Extension-Name: commons-lang
Specification-Version: 2.4
Specification-Vendor: Apache Software Foundation
Specification-Title: Commons Lang
Implementation-Version: 2.4
Implementation-Vendor: Apache Software Foundation
Implementation-Title: Commons Lang
Implementation-Vendor-Id: org.apache
X-Compile-Source-JDK: 1.3
X-Compile-Target-JDK: 1.2
বিকল্পভাবে আপনি এর -p
পরিবর্তে ব্যবহার করতে পারেন -q -c
।
-p পাইপ থেকে ফাইল এক্সট্রাক্ট (stdout)। স্ট্যান্ডআউটে ফাইলের ডেটা পাঠানো ছাড়া আর কিছুই হয় না এবং ফাইলগুলি সর্বদা বাইনারি ফর্ম্যাটে সঞ্চিত হয় ঠিক যেমন সেগুলি সঞ্চিত হয় (কোনও রূপান্তর নেই)।
ব্যবহার unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
যা নিঃশব্দে ( -q
) জারফাইল (যা জিপ ফর্ম্যাটটি দিয়ে সংকুচিত করা হয়) থেকে স্টাডআউট () -র দিকে META-INF / MANIFEST.MF পাথটি পড়বে -c
) এরপরে 'এই জারের মূল শ্রেণিটি কী কী: এমন প্রশ্নের উত্তর দিতে আপনি অন্য কমান্ডের আউটপুটটি পাইপ করতে পারেন:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(এটি স্ট্রিং না থাকা সমস্ত লাইন সরিয়ে দেয় Main-Class
, তারপরে :
কেবল দ্বিতীয় ক্ষেত্র, শ্রেণীর নাম রেখে লাইনটি বিভক্ত করে )। অবশ্যই, হয় $JARFILE_PATH
যথাযথভাবে সংজ্ঞা দিন বা $JARFILE_PATH
আপনার আগ্রহী জারফিলের পথটি প্রতিস্থাপন করুন ।
আপনার বিতরণের উপর নির্ভর করে unzip
প্যাকেজটি ইনস্টল করুন । তারপরে সহজভাবে ইস্যু করুন
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
এটি সামগ্রীগুলি STDOUT এ ফেলে দেবে।
এইচটিএইচ
অন্যরা গ্রাহক বা জাঁকজমক থেকে মুক্ত করার জন্য আনজিপ-পি ব্যবহার এবং পাইপিং বা আপনার যা যা প্রয়োজন তা পোস্ট করছেন। যদিও এটি বেশিরভাগ ক্ষেত্রে কাজ করে, এটি লক্ষণীয় যে MANIFEST.MF- এর প্রতি-লাইন 72 অক্ষরগুলির কারণে আপনি কীগুলির জন্য গ্রেপিং করতে পারেন যার মানগুলি একাধিক লাইনে বিভক্ত হয়ে গেছে এবং সুতরাং পার্স করা খুব কঠিন হবে। আমি এমন একটি সি এল এল সরঞ্জাম দেখতে পছন্দ করব যা ফাইলের বাইরে একটি রেন্ডার মানকে টানতে পারে।
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
নিম্নলিখিত গ্রোভী লিপিটি জাভির API টি ম্যানিফেস্টকে পার্স করতে ব্যবহার করে, ম্যানিফেস্টের ফর্ম্যাটটির অদ্ভুত লাইন ব্রেকিংয়ের সাথে সমস্যাগুলি এড়িয়ে চলে:
#!/usr/bin/env groovy
for (arg in args) {
println("[$arg]")
jarPath = new java.io.File(arg).getAbsolutePath()
jarURL = new java.net.URL("jar:file:" + jarPath + "!/")
m = jarURL.openConnection().getManifest()
m.getMainAttributes().each { k, v -> println("$k = $v") }
}
যুক্তি হিসাবে JAR ফাইলগুলি পাস করুন:
$ groovy manifest.groovy ~/.m2/repository/junit/junit/4.13/junit-4.13.jar
[/Users/curtis/.m2/repository/junit/junit/4.13/junit-4.13.jar]
Implementation-Title = JUnit
Automatic-Module-Name = junit
Implementation-Version = 4.13
Archiver-Version = Plexus Archiver
Built-By = marc
Implementation-Vendor-Id = junit
Build-Jdk = 1.6.0_65
Created-By = Apache Maven 3.1.1
Implementation-URL = http://junit.org
Manifest-Version = 1.0
Implementation-Vendor = JUnit
বা যদি আপনি ওয়ান লাইনারের জন্য মরিয়া হন:
groovy -e 'new java.net.URL("jar:file:" + new java.io.File(args[0]).getAbsolutePath() + "!/").openConnection().getManifest().getMainAttributes().each { k, v -> println("$k = $v") }' ~/.m2/repository/junit/junit/4.13/junit-4.13.jar