গ্রেড ব্যবহার করে আপনার জারে রিসোর্স, কনফিগারেশন ফাইল যুক্ত করুন


91

গ্রেডেল ব্যবহার করে আমি কীভাবে কনফিগারেশন ফাইল বা অন্য কোনও সংস্থান যুক্ত করব?

আমার প্রকল্প কাঠামো:

src / main / java / com / perseus / .. --- জাভা প্যাকেজ (উত্স ফাইল)

src / main / java / config / *। xML --- বসন্ত কনফিগারেশন ফাইল

প্রত্যাশিত জার কাঠামো:

com / perseus / .. --- জাভা প্যাকেজ (ক্লাস ফাইল)

কনফিগারেশন * * xML --- বসন্ত কনফিগারেশন ফাইল

উত্তর:


81

আমি কীভাবে সংস্থানগুলির জন্য অতিরিক্ত ডিরেক্টরি যুক্ত করতে পারি তা অনুসন্ধান করে এই পোস্টটি জুড়ে এসেছি। আমি এমন একটি সমাধান পেয়েছি যা কারওর পক্ষে কার্যকর হতে পারে। এটি পেতে আমার চূড়ান্ত কনফিগারেশন এখানে রয়েছে:

sourceSets {
    main {
        resources {
            srcDirs "src/main/resources", "src/main/configs"
        }
    }
}

4
এটি গৃহীত উত্তরের চেয়ে অনেক সহজ সমাধান
স্টিয়ার্ট

70

থেকে কনফিগ ফাইল সরান src/main/javaকরতে src/main/resources


4
আমার পক্ষে কাজ করে, এটিকে অর্জন করার জন্য সবচেয়ে সহজ এবং "সবচেয়ে সঠিক" উপায় বলে মনে হচ্ছে।
ইএম-ক্রিয়েশান

এই উত্তরটি কোনও সমাধানের পরিবর্তে একটি কাজ সম্পর্কে পরামর্শ দেয় এবং গ্রেডল একটি সমাধান সরবরাহ করে।
ভয়ঙ্কর ট্যাডপোল

পছন্দ করুন অন্য সব কর্মক্ষেত্রের হয়।
জান্নিস

64

ধন্যবাদ বলছি, আমি একটি বিদ্যমান প্রকল্প গ্রেডলে স্থানান্তরিত করেছিলাম এবং প্রকল্পের কাঠামোটি এতটা পরিবর্তন করার ধারণা পছন্দ করি না।

আমি এটি সন্ধান করেছি, ভেবেছিলাম এই তথ্যটি প্রাথমিকভাবে কার্যকর হতে পারে।

আমার 'build.gradle' এর একটি নমুনা কাজ এখানে:

version = '1.0.0'

jar {
   baseName = 'analytics'
   from('src/main/java') {
      include 'config/**/*.xml'
   }

   manifest {
       attributes 'Implementation-Title': 'Analytics Library', 'Implementation-Version': version
   }
}

34
উত্স সেটটি পুনরায় কনফিগার করা এটি আরও সঠিক। কিছু একটা sourceSets.main.resources { srcDirs = ["src/main/java"]; exclude "**/*.java" }
পিটার নিদারউইজার

4
ধন্যবাদ @ পিটারনিডেরউইজার !! ছায়া ব্যবহার করে যে বিল্ডিংটি তৈরি করছিলাম তা আমার নির্বাহযোগ্য জারে আমার লগ 4j.xML ফাইলটি অন্তর্ভুক্ত করার চেষ্টা করা হয়েছে। আমিও একটি পুরানো প্রকল্পের সাথে ডিল করছি এবং সহজেই ডিরেক্টরি কাঠামো পরিবর্তন করতে পারিনি। আপনার পরামর্শটি ঠিক আমার প্রয়োজন মতো ছিল !! : ডি
পিকো

@ পিটারনিডেরউইজার - আমি জাভা প্লাগইন ডকুমেন্টেশনে লক্ষ্য করেছি যে *। জাভা বাদ দেওয়ার জন্য সংস্থানগুলি ইতিমধ্যে সংজ্ঞায়িত। "কেবলমাত্র সংস্থান রয়েছে এবং সংস্থান উত্স ডিরেক্টরিতে পাওয়া কোন জাভা ফাইল বাদ দেয়" "
জো বোবিয়ার

25

ডিফল্টরূপে আপনি যে কোনও ফাইল যুক্ত src/main/resourcesকরেন তা জারে অন্তর্ভুক্ত করা হবে।

যদি কোনও কারণে আপনার যদি সেই আচরণটি পরিবর্তন করতে হয় তবে আপনি কনফিগার করে এটি করতে পারেন sourceSets

এইডকুমেন্টেশনের অংশে সমস্ত বিবরণ রয়েছে


4
আপনি কি জানবেন কেন সামগ্রীর সাথে সম্পদ ডিরেক্টরি .../resources/পরিবর্তে কেবলমাত্র সামগ্রীই অন্তর্ভুক্ত করা হয়েছে?
সরগস

@ জাগারাস আপনার সম্ভবত একটি নতুন প্রশ্ন শুরু করা উচিত যেখানে আপনি সহজেই সমস্ত প্রসঙ্গ অন্তর্ভুক্ত করতে পারেন। মন্তব্য বিভাগে অনেক তথ্য পাওয়া শক্ত :(
জিওএন্ড

18

আমি একই সমস্যা মধ্যে দৌড়ে। আমার একটি জাভা প্যাকেজে একটি পিএনজি ফাইল ছিল এবং এটি সূত্রের সাথে চূড়ান্ত জেআরে রপ্তানি করা হয়নি, যা অ্যাপ্লিকেশনটি শুরু হওয়ার পরে ক্র্যাশ করেছিল (ফাইলটি পাওয়া যায় নি)।

উপরের কোনও উত্তরই আমার সমস্যার সমাধান করেনি তবে আমি গ্রেডল ফোরামগুলিতে সমাধানটি পেয়েছি। আমি আমার build.gradleফাইলে নিম্নলিখিতগুলি যুক্ত করেছি :

sourceSets.main.resources.srcDirs = [ "src/" ]
sourceSets.main.resources.includes = [ "**/*.png" ]

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

সম্পাদনা করুন: সাবধানতা অবলম্বন করুন যে আপনি যদি গ্রহনটি ব্যবহার করছেন তবে এটি আপনার রান কনফিগারেশনগুলি ভেঙে দেবে এবং main class not foundআপনার প্রোগ্রামটি চালানোর চেষ্টা করার সময় আপনি একটি ত্রুটি পাবেন । এটি ঠিক করার জন্য, আমি খুঁজে পেয়েছি একমাত্র সমাধান হ'ল চিত্র (গুলি) অন্য ডিরেক্টরিতে সরিয়ে নেওয়া, res/উদাহরণস্বরূপ, এবং এটির srcDirsপরিবর্তে সেট করা src/


4
আমি +=বিদ্যমান অপারেটরগুলিতে আমার ডায়ার যুক্ত করতে অপারেটরটি ব্যবহার করেছি: উদাহরণস্বরূপsourceSets.main.resources.srcDirs += [ "src/main/java" ]
টিএমট্রন

3

সচেতন থাকুন যে এসআরসি / প্রধান / সংস্থানসমূহের অধীনে পাথ অবশ্যই আপনার .class ফাইলগুলির প্যাকেজের সাথে সংস্থান করতে চায় যা সংস্থান অ্যাক্সেস করতে চায় match আমার উত্তর এখানে দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.