অন্যরা যেমন উল্লেখ করেছে, একটি জার ফাইলটি কার্যকর করার জন্য, অ্যাপ্লিকেশনটির প্রবেশের স্থানটি Main-Class
ম্যানিফেস্ট ফাইলের বৈশিষ্ট্যে সেট করতে হবে । যদি নির্ভরতা শ্রেণীর ফাইলগুলি সংঘবদ্ধ না হয়, তবে সেগুলি Class-Path
ম্যানিফেস্ট ফাইলের প্রবেশের মধ্যে সেট করা দরকার ।
আমি সমস্ত ধরণের প্লাগইন সংমিশ্রণ চেষ্টা করেছি এবং এক্সিকিউটেবল জার তৈরির সহজ কাজের জন্য কী নয় এবং কোনওভাবে নির্ভরতাও অন্তর্ভুক্ত করে। সমস্ত প্লাগইনগুলির একরকম বা অন্য কোনও অভাব রয়েছে বলে মনে হচ্ছে, তবে অবশেষে আমি এটি চেয়েছিলাম পেয়েছিলাম। কোনও রহস্যজনক স্ক্রিপ্ট নেই, বিল্ড ডিরেক্টরিটি দূষণকারী এক মিলিয়ন বিভিন্ন মিনি ফাইল নয়, একটি সুন্দর পরিষ্কার বিল্ড স্ক্রিপ্ট ফাইল এবং সর্বোপরি: মিলিয়ন বিদেশী তৃতীয় পক্ষের শ্রেণীর ফাইলগুলি আমার জার সংরক্ষণাগারে সংরক্ষণ করা হয়নি।
আপনার সুবিধার্থে নীচে এখান থেকে একটি অনুলিপি দেওয়া আছে ..
[কীভাবে] উপ-ডিরেক্টরিতে নির্ভরতা জারের সাথে একটি বিতরণ জিপ ফাইল তৈরি /lib
করুন Class-Path
এবং ম্যানিফেস্ট ফাইলটিতে প্রবেশের জন্য সমস্ত নির্ভরতা যুক্ত করুন:
apply plugin: 'java'
apply plugin: 'java-library-distribution'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-lang3:3.3.2'
}
// Task "distZip" added by plugin "java-library-distribution":
distZip.shouldRunAfter(build)
jar {
// Keep jar clean:
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
manifest {
attributes 'Main-Class': 'com.somepackage.MainClass',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
}
// How-to add class path:
// /programming/22659463/add-classpath-in-manifest-using-gradle
// https://gist.github.com/simon04/6865179
}
এখানে একটি টুকরো হিসাবে হোস্ট ।
ফলাফলটি পাওয়া যাবে build/distributions
এবং আনজিপড সামগ্রীগুলি দেখতে দেখতে:
lib / commons-lang3-3.3.2.jar
MyJarFile.jar
এর উপাদানসমূহ MyJarFile.jar#META-INF/MANIFEST.mf
:
ম্যানিফেস্ট-সংস্করণ: 1.0
মূল-শ্রেণি: com.somepackage.ManeClass
শ্রেণি-পথ: lib / Commons-lang3-3.3.2.jar