ইন্টেলিজি থেকে চলাকালীন আমি কীভাবে একটি স্প্রিং বুট প্রোফাইল সক্রিয় করব?


133

আমার 5 টি পরিবেশ রয়েছে:

 - local (my development machine)
 - dev
 - qc
 - uat
 - live
 - staging

আমি প্রতিটি পরিবেশের জন্য পৃথক অ্যাপ্লিকেশন বৈশিষ্ট্য ব্যবহার করতে চাই, তাই আমার কাছে নিম্নলিখিত বৈশিষ্ট্যগুলির ফাইল রয়েছে যার প্রত্যেকটিতে ডেটাসোর্সের জন্য আলাদা URL রয়েছে:

 - application.properties  (containing common properties)
 - application-local.properties
 - application-dev.properties
 - application-qc.properties
 - application-uat.properties
 - application-live.properties

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

আমি যোগ করার চেষ্টা করেছি:

--spring.profiles.active = স্থানীয়

স্ক্রিপ্ট পরামিতি অধীনে রান কনফিগারেশন।

আমি যোগ করার চেষ্টা করেছি

-Dspring.profiles.active = স্থানীয়

ভিএম বিকল্পের অধীনে রান কনফিগারেশন।

কোন কাজ। আমি সূচনায় INFO বার্তাটি দেখতে দেখতে থাকি: বলুন: কোনও সক্রিয় প্রোফাইল সেট নেই, ডিফল্ট প্রোফাইলগুলিতে ফিরে আসুন: ডিফল্ট

আমি যদি উইন্ডোজ কমান্ড লাইনটি ব্যবহার করে আমার অ্যাপটি চালিত করি

gradle bootRun

তবে আমি প্রথম পরিবেশ পরিবর্তনশীল সেট

set SPRING_PROFILES_ACTIVE=local

তারপরে সবকিছু কাজ করে।

সুতরাং আমার প্রশ্নটি হল, ইন্টেলিজিজ থেকে বুটরান চালানোর সময় আমি কীভাবে আমার স্থানীয় স্প্রিং বুট প্রোফাইলটি সক্রিয় করব?


1
আপনি কেন সেখানে গ্রেডের মাধ্যমে অ্যাপ্লিকেশনটি চালাচ্ছেন? রান কনফিগারেশনটি ব্যবহার করা 10 গুণ বেশি সুবিধাজনক হবে না? এমন একটি ক্ষেত্র রয়েছে যেখানে আপনি প্রোফাইলগুলি সক্ষম করতে সক্ষম করতে পারেন ...
স্টিফেন নিকল

উপরে বর্ণিত হিসাবে আমি ইন্টেলিজজে রান কনফিগারেশনটি ব্যবহার করছি। এটা কাজ করছে না.
dleerob

2
না তুমি নও. আমি যা বলছি তা হ'ল "স্প্রিং বুট রান কনফিগারেশন" চালান -> কনফিগারেশন সম্পাদনা করুন> নতুন> স্প্রিং বুট।
স্টিফেন নিকল

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

1
স্প্রিং বুট কনফিগারেশন ব্যবহার করা এর পক্ষে মূল্য হিসাবে বেশি সমস্যা মনে হচ্ছে। 'তৈরি করুন' কেবলমাত্র উত্সগুলিতে অনুলিপি করে এবং বিল্ড স্ক্রিপ্ট অনুসারে এগুলি ফিল্টার / পরিবর্তন করে না। তারপরে এটিকে 'মেক' এর পরিবর্তে গ্রেড থেকে 'বিল্ড' চালানো বলার ফলে রানটি হিমশীতল হয়ে যায়। আমি যদি পরিবর্তে বুটরুন ব্যবহার করি তবে নীচের উত্তর অনুসারে আমার পরিবেশের প্রবেশের সাথে, সমস্ত ঠিক আছে।
dleerob

উত্তর:


194

আমি -Dspring.profiles.active=testভিএম বিকল্পগুলিতে যুক্ত করেছি এবং তারপরে সেই কনফিগারেশনটি পুনরায় চালিত করেছি। এটি পুরোপুরি কাজ করেছে।

এটি দ্বারা সেট করা যেতে পারে

  • নির্বাচন Run | Edit Configurations...
  • Configurationট্যাবে যান
  • Environmentপ্রকাশ করার জন্য বিভাগটি প্রসারিত করুনVM options

আমি একই পরিস্থিতিতে আটকে ছিলাম তবে একটি মাভেন প্রকল্পের জন্য। সাহায্যের জন্য ধন্যবাদ. আমরা প্রতিটি পরীক্ষার ফাইলের জন্য ভিএম বিকল্প সেট করে রেখেছি।
শ্রী 9911

2
এটি আমার পক্ষেও কাজ করে না। আমি গ্রেডেল এবং দুটি মডিউল ব্যবহার করি (এপিআই এবং ইউআই)
ভাইকোম

1
এখানেও গ্রেড ব্যবহার করে আমার পক্ষে কাজ করে না।
আইআরআই

এইচআই, আমার একই সমস্যা আছে তবে এই ফিক্সটি সমস্যার সমাধান করে না। কনফিগারেশন পুনরায় পুনরায় দ্বারা এখানে বোঝানো কি? এটি কি ঠিক তেমনি কাজটি পুনরায় চালনার মতো?
user1456110

আমি প্রদর্শিত হিসাবে সম্পাদনা করার পরে যে নির্দিষ্ট পরীক্ষা চালানো।
থম

82

যদি আপনি প্রকৃতপক্ষে বসন্ত বুট রান কনফিগারেশনগুলি ব্যবহার করেন (বর্তমানে কেবলমাত্র চূড়ান্ত সংস্করণে সমর্থিত) "সক্রিয় প্রোফাইলগুলি" সেটিংসে প্রোফাইলগুলি পূর্ব-কনফিগার করা সহজ।

এখানে চিত্র বর্ণনা লিখুন


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

হিসাবে একটি উপরে উত্তর নির্দিষ্ট যদি এই আপনার জন্য কাজ করছে না, নিশ্চিত করুন যে আপনি পার করছি argsআপনার Application.main()যেমনSpringApplication.run( Application.class, args );
Xaero Degreaz

এই বৈশিষ্ট্যটি কেবলমাত্র আলটিমেট সংস্করণে সমর্থিত।
জুলিয়েন মালিগে

এটি নির্দেশ করার জন্য @ জুলিয়েনমালিগে ধন্যবাদ। আমি আমার উত্তর সম্পাদনা করব।
ড্যানিয়েল বুবনেহিম

11

আপনার বিল্ড.gradle এ এই কমান্ড যুক্ত করার চেষ্টা করুন

এখানে চিত্র বর্ণনা লিখুন

সুতরাং চালানোর জন্য যে আকারটি কনফিগার করুন:

এখানে চিত্র বর্ণনা লিখুন


9

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

1. ভিএম বিকল্পগুলি পরিবর্তন করুন

"রান" এবং "ভিএম বিকল্পসমূহ" এ "সম্পাদনা কনফিগারেশন" খুলুন, যুক্ত করুন: -Dspring.profiles.active=local

এটা আসলে সঙ্গে খনি এক প্রকল্পের সাথে কাজ করে Spring Boot v2.0.3.RELEASEএবং Spring v5.0.7.RELEASE, কিন্তু না সঙ্গে অন্য প্রকল্পের সঙ্গে Spring Boot v2.1.1.RELEASEএবং Spring v5.1.3.RELEASE

এছাড়াও, মাভেন বা জেআর দিয়ে চলার সময় লোকেরা এটি উল্লেখ করেছে:

mvn spring-boot:run -Drun.profiles=dev

অথবা

java -jar -Dspring.profiles.active=dev XXX.jar

(এখানে দেখুন: কীভাবে স্প্রিং বুট প্রোফাইল ব্যবহার করবেন )

২. জেভিএম আরগগুলি পাস করা

এটি কোথাও উল্লেখ করা হয়েছে, বসন্ত অ্যাপ্লিকেশনগুলির প্রক্রিয়া প্রবর্তনের পদ্ধতির পরিবর্তন করে যদি আপনি কিছু জেভিএম বিকল্প উল্লেখ করেন; এটি অন্য প্রক্রিয়া কাঁটাচ্ছে এবং এটি প্রাপ্ত আর্গটি পাস করবে না যাতে এটি কাজ করে না। এতে আরোগুলি দেওয়ার একমাত্র উপায় হ'ল:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="..."

আবার, এটি মাভেনের জন্য। https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html

3. সেটিং (অ্যাপ্লিকেশন) env var

দ্বিতীয় প্রকল্পের জন্য আমার পক্ষে কী কাজ করে তা পরিবেশের পরিবর্তনশীল নির্ধারণ করছিল, যেমন উপরে কিছু উত্তরে উল্লিখিত ছিল: "কনফিগারেশন সম্পাদনা করুন" - "পরিবেশ পরিবর্তনশীল", এবং:

SPRING_PROFILES_ACTIVE=local

1
Env var আসলে হওয়া উচিত SPRING_PROFILES_ACTIVE
জোশ এম

আমি এটিকে আইডিইএর "ভিএম বিকল্প" "বসন্ত.প্রফিলস.একটিভ" এর মতো "রান কনফিগারেশন" এ যুক্ত করেছি এবং এটি কার্যকর হয়। সম্ভবত আরএস এর মতো অন্য রূপটি সিস্টেম বৈশিষ্ট্যে সিস্টেম-ব্যাপী ব্যবহৃত হয়?
ওয়েস্টার্নগুন

আপনি যদি এটিতে ~/.profileবা অনুরূপ যোগ করে থাকেন তবে আপনাকে ব্যবহার করতে হবে SPRING_PROFILES_ACTIVE- spring.profiles.activeসম্ভবত কমান্ড লাইনে একটি যুক্তি হিসাবে কাজ করবে।
জোশ এম

1
আহ .. সুতরাং আপনি যেমন সন্দেহ করেছিলেন ঠিক তেমনই আমার সন্দেহ; বাস্তব সিস্টেম vv না শুধুমাত্র আবেদন env। ঠিক আছে আমি একটি সম্পাদনা করি।
ওয়েস্টার্নগুন

8

আমি আমার বিল্ডড্র্যাডলে নিম্নলিখিতগুলি যুক্ত করে শেষ করেছি:

bootRun {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local"
}

test {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test"
}

সুতরাং এখন ইন্টেলিজিজ থেকে বুটরান চালানোর সময় এটি "স্থানীয়" প্রোফাইলে ডিফল্ট হয়।

আমাদের অন্যান্য পরিবেশে, আমরা টমক্যাটে কেবল 'SPRING_PROFILES_ACTIVE' পরিবেশ পরিবর্তনশীল সেট করব।

আমি এখানে পাওয়া একটি মন্তব্য থেকে এটি পেয়েছি: https://github.com/spring-projects/spring-boot/pull/592


6

সম্ভাব্য কারণ হ'ল আপনি অ্যাপ্লিকেশনগুলির প্রধান পদ্ধতিতে কমান্ড লাইন প্যারামিটারগুলি পাস না করে। আমি কয়েক সপ্তাহ আগে একই ভুল করেছি।

public static final void main(String... args) {
    SpringApplication.run(Application.class, args);
}

উত্তর এবং পরামর্শের জন্য ধন্যবাদ, তবে আমি যুক্তিগুলি পাস করছি
dleerob

এটি আসলে আমার সমস্যা সমাধান করেছে। কোনও কারণে যখন আমি গ্র্যাডল ব্যবহার করে প্রকল্পটি তৈরি করেছি Applicationতখন এটি আমার ক্লাসটি স্বয়ংক্রিয়ভাবে উত্পন্ন করে না তাই মেমরি থেকে হাত ধরে এটি করেছে। argsপদক্ষেপটি মিস করেছেন এবং তাই রান কনফিগারেশনের "অ্যাক্টিভ প্রোফাইলগুলি" বাক্সটি কার্যকর হয়নি - আমাকে নিজেই -Dspring.profiles.activeভিএম বিকল্প বাক্সে পাস করতে হয়েছিল ।
Xaero Degreaz

3

আমি ইন্টেলিজ সম্প্রদায় সংস্করণ ব্যবহার করি। "রান / ডিবাগ কনফিগারেশন"> রানার ট্যাব> পরিবেশ পরিবর্তনসমূহ> বোতামে ক্লিক করুন "..." এ যান। যুক্ত করুন: SPRING_PROFILES_ACTIVE = স্থানীয়

spring.profiles.active



2

আমার ক্ষেত্রে আমি ভিএম অপশনগুলিতে নীচে কনফিগারেশন ব্যবহার করেছি IntelliJ, এটি স্থানীয় কনফিগারেশনগুলি বেছে নিচ্ছে না তবে IntelliJএটি পুনরায় চালু হওয়ার পরে কনফিগারেশন বিশদটি বেছে নিয়েছে IntelliJএবং পরিষেবাটি চলতে শুরু করেছে।

-Dspring.profiles.active=local

0

এটা চেষ্টা কর. নিম্নলিখিত হিসাবে আপনার বিল্ড.gradle ফাইল সম্পাদনা করুন।

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' }


-3

-Dspring.profiles.active=localপ্রোগ্রাম আর্গুমেন্ট অধীনে সেট করুন ।


আমি উপরের আমার প্রশ্ন থেকে উদ্ধৃতিগুলি সরিয়েছি। আমি আসলে উদ্ধৃতিগুলি ব্যবহার করছি না, আমি রান কনফিগারেশনের ক্ষেত্রে ঠিক কী রাখছি তা দেখানোর চেষ্টা করছিলাম
dleerob

5
আপনার মানে ভিএম বিকল্প!
মিশেল মাইখাইলিডিস

এই উত্তরটি খুব বিভ্রান্তিমূলক কারণ প্রোগ্রাম যুক্তিগুলি অ্যাপ্লিকেশন দ্বারা স্বীকৃত হবে না!
yuranos

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