বসন্ত বুটে কমান্ড লাইন থেকে সক্রিয় প্রোফাইল এবং কনফিগারেশন অবস্থান নির্ধারণ করা


163

আমার একটি স্প্রিং বুট অ্যাপ্লিকেশন রয়েছে।

আমার অ্যাপ্লিকেশন-> বিকাশ, মঞ্চায়ন এবং উত্পাদনে আমার তিনটি প্রোফাইল রয়েছে । সুতরাং আমি 3 ফাইল আছে

  1. অ্যাপ্লিকেশন-development.yml
  2. অ্যাপ্লিকেশন-staging.yml
  3. অ্যাপ্লিকেশন-production.yml

আমার অ্যাপ্লিকেশন.আইএমএল ভিতরে থাকে src/main/resources। আমি এপ্লিকেশন.আইএমএলে সক্রিয় প্রোফাইলটি সেট করেছি:

spring:
  profiles.active: development

অন্যান্য 3 প্রোফাইল নির্দিষ্ট কনফিগারেশন ফাইলগুলি C:\configফোল্ডারে উপস্থিত রয়েছে ।

আমি গ্রহনের জন্য গ্রেড প্লাগইন ব্যবহার করছি। আমি যখন " বুটআরন " করার চেষ্টা করি তখন আমি গ্রিডে আমার গ্রেড কনফিগারেশনে কমান্ড লাইন আর্গুমেন্টগুলি সেট করে রাখছি

 -Dspring.profiles.active=staging -Dspring.config.location=C:\Config

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

আমি মনে করি আমি এখানে কিছু মিস করছি। আমি গত 2 দিন ধরে এটি বের করার চেষ্টা করছি। তবে ভাগ্য নেই। আমি যেকোন সাহায্য এর জন্য সত্যিই কৃতজ্ঞ থাকব.


আপনি দয়া করে আপনার bootRunকমান্ড লাইনটি যুক্ত করতে পারেন
বিজু কুঞ্জুমেন

আমি এটিকে আজ অবধি কমান্ড লাইন থেকে না করে গ্রহণ থেকে চালাচ্ছি। তবে আমি "গ্রেড বুটরান -Dspring.config.location = সি: \ কনফিগার \ -Dspring.profiles.active = মঞ্চায়ন" ব্যবহার করে চালানোর চেষ্টা করেছি এবং একই ফলাফল পেয়েছি।
ও-অফ-এন

উত্তর:


340

কমান্ড লাইনে বসন্তের বৈশিষ্ট্যগুলি যুক্ত / ওভাররাইড করতে পারেন এমন দুটি আলাদা উপায় রয়েছে।

বিকল্প 1: জাভা সিস্টেমের সম্পত্তি (ভিএম আর্গুমেন্ট)

এটি গুরুত্বপূর্ণ যে-ডি প্যারামিটারগুলি আপনার অ্যাপ্লিকেশনের আগেই রয়েছে jar অন্যথায় সেগুলি স্বীকৃত নয়।

java -jar -Dspring.profiles.active=prod application.jar


বিকল্প 2: প্রোগ্রাম আর্গুমেন্ট

java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config

45
-ড প্যারামিটারগুলির অর্ডারটি সত্যই গুরুত্বপূর্ণ :)
মার্টিন

3
টমক্যাট কনটেইনারটি মোতায়েন করার সময় আপনি কীভাবে এটি অর্জন করতে পারেন? সেক্ষেত্রে আমি কেবল আমার যুদ্ধটি টমক্যাটের ওয়েব অ্যাপস ফোল্ডারে রেখেছি, আমি কীভাবে প্রোফাইল তথ্য সরবরাহ করব? সিস্টেমের বৈশিষ্ট্য নির্ধারণ করে?
27:37

@ প্রিয়াগআপড হ্যাঁ, আপনি আপনার বাশ_প্রফাইলে সিস্টেম বৈশিষ্ট্য সেট করতে পারেন।
শুভ কামনা

2
@maneesh হাঁ, আমি ব্যবহার করছি env পরিবর্তনশীল SPRING_PROFILES_ACTIVE মাধ্যমে রপ্তানি ~/.bash_profileexport SPRING_PROFILES_ACTIVE=e2e

1
আপনি যখন অর্ডারটি গুরুত্বপূর্ণ বলেছিলেন: আমরা কি উভয় আর্গগুলিতে পাস করতে পারি: -ডস্প্রিং.প্রোফিল.একটিভ এবং -ডস্প্রিং.কনফিগ.এই লোকেশন যেমন প্রোফাইলটি প্রথম যুক্তি অনুসারে সেট করা হয় এবং সম্পত্তি ফাইলটি অনুসারে বাছাই করা হয় দ্বিতীয় আরগস? java -Dspring.profiles.active=$ENV -Dspring.config.location=file:///aws-secrets-manager/properties/application-$ENV.properties /code/app.jar
উদা

25

আমার সেরা অনুশীলন এটি একটি ভিএম "-D" যুক্তি হিসাবে সংজ্ঞায়িত করা। বসন্ত বুট 1.x এবং 2.x মধ্যে পার্থক্য নোট করুন।

সক্ষম করতে প্রোফাইলগুলি কমান্ড লাইনে নির্দিষ্ট করা যেতে পারে:

স্প্রিং-বুট 2.x

-Dspring-boot.run.profiles=local

স্প্রিং-বুট 1.x

-Dspring.profiles.active=local

ম্যাভেনের সাথে ব্যবহারের উদাহরণ:

স্প্রিং-বুট 2.x

mvn spring-boot:run -Dspring-boot.run.profiles=local

স্প্রিং-বুট 1.x

mvn spring-boot:run -Dspring.profiles.active=local

একাধিক প্রোফাইলের জন্য তাদের কমা দিয়ে আলাদা করার বিষয়টি নিশ্চিত করুন:

mvn spring-boot:run -Dspring.profiles.active=local,foo,bar
mvn spring-boot:run -Dspring-boot.run.profiles=local,foo,bar

মানে বসন্ত / বসন্ত-বুট? (স্প্রিং 1 এক্স এবং স্প্রিং 2 এক্স)!
স্মাইলফেস করুন

1
@ সিমিলিফেস স্প্রিং বুট বসন্ত বুট বিভিন্ন সংস্করণে উপলব্ধ: mvnrepository.com/artifact/org.springframework.boot/spring-boot
এসএমএ মা

2
আমি স্প্রিং-বুট ২.১.৩ ব্যবহার করি এবং -Dspring-boot.run.profiles=localকাজ করি না, -Dspring.profiles.active=localকাজ করি।
দোঙ্গুয়া লিউ

বসন্ত-বুট ২.২.০: উভয়ই কাজ করুন: -Dspring-boot.run.profilesএবং-Dspring.profiles.active
গ্রেগরি কিসলিন

17

আমাকে এটি যুক্ত করতে হয়েছিল:

bootRun {
    String activeProfile =  System.properties['spring.profiles.active']
    String confLoc = System.properties['spring.config.location']
    systemProperty "spring.profiles.active", activeProfile
    systemProperty "spring.config.location", "file:$confLoc"
}

এবং এখন বুটরান প্রোফাইল এবং কনফিগারেশনের অবস্থানগুলি তুলবে।

পয়েন্টারটির জন্য অনেক ধন্যবাদ @ জাস্ট।


7
এর ফলে, নিম্নলিখিত হিসাবে আরও বেশি সহজ হতে পারে: bootRun { systemProperties = System.properties }। এই কমান্ডটি মানচিত্রে -Dএকই কীগুলির সাহায্যে পাস করা সমস্ত পরামিতিগুলি অনুলিপি করবে systemProperty
এডুফিন

এটি একটি গ্রেড একমাত্র সমাধান বলে মনে হচ্ছে, জেনেরিক কোনও সমাধান নেই?
ব্যবহারকারী 1767316

1
আপনি ঠিক কোথায় এটি যুক্ত করছেন? বিল্ড.gradle ফাইলের মধ্যে বা ফাইলের মধ্যে কোনও নির্দিষ্ট জায়গায়?
স্কালার উত্সাহ

16
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config

সঠিক নয়.

হতে হবে:

--spring.profiles.active=staging --spring.config.location=C:\Config

3
এটি ত্রুটির কারণ "অজানা বিকল্প: --spring.config.location"
জেমস ওয়াটকিন্স

-D হ'ল জাভা সিস্টেমের বৈশিষ্ট্য সেট করার সঠিক উপায়। - কিছু হ'ল বাশ প্যারামিটার।
এক্সডিজি

--spring.profiles.active আমার জন্য কাজ, একই জিনিসটি আমি ডকস.স্প্রিং.ইউ
পুশকার

এটিগ্রহণের জন্য যেমন -> জাভা অ্যাপ্লিকেশনটি
অলিভিয়ার বোইস

11
আসলে উভয়ই সঠিক, এটি কীভাবে ব্যবহৃত হবে তার উপর নির্ভর করে: এটি java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jarOR হতে পারেjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Config
ডেক্সটার লেগাস্পি

9

আপনি নিম্নলিখিত কমান্ড লাইনটি ব্যবহার করতে পারেন:

java -jar -Dspring.profiles.active=[yourProfileName] target/[yourJar].jar

9

ওএস ভেরিয়েবল, SPRING_PROFILES_ACTIVE সেট করে আরও একটি উপায় রয়েছে

যেমন:

SPRING_PROFILES_ACTIVE=dev gradle clean bootRun

তথ্যসূত্র: কীভাবে সক্রিয় বসন্ত প্রোফাইল সেট করবেন


হ্যাঁ, এবং এটি গ্র্যাডল যেভাবে অ্যাপ্লিকেশনটির মাধ্যমে সিস্টেমের বৈশিষ্ট্যগুলি হ্যান্ডস করে তা ঘুরিয়ে ফেলার প্রয়োজনীয়তা এড়িয়ে যায়।
ben3000

এটি ঝরঝরে উপায়। এটি ডাটাবেস ব্যবহারকারী এবং পাসওয়ার্ড এবং অন্যান্য সংবেদনশীল কনফিগারেশন সেট করতে ব্যবহার করা উচিত যাতে তারা সংস্করণ নিয়ন্ত্রণে চেক না হয়।
ইগোর ডনিন

7

মাভেন প্লাগইনের মাধ্যমে প্রোফাইল সেট করার সময় আপনাকে অবশ্যই এটির মাধ্যমে করতে হবেrun.jvmArguments

mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"

ডিবাগ বিকল্প সহ:

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Dspring.profiles.active=jpa"

আমি এই ভ্রমণটি অনেক লোককে দেখেছি ... আশা করি এটি সহায়তা করে


1
পরিবর্তিত হয়েছে mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar, দেখুন: ডকস.স্প্রিং.আইও
স্প্রিং-

@ rwenz3l ধন্যবাদ! এটি আমার পক্ষে কাজ করে, একটি প্রকল্পের জন্য স্প্রিং বুট 1 থেকে 2 আপগ্রেড করেছে Now এখন আমি কেবল তাদের সমস্তটি আমার বাশার্কে যুক্ত করছি ... springmvn="mvn clean spring-boot:run -Dspring.profiles.active=local -Dspring-boot.run.profiles=local"
জন স্মিথ

5

আমি মনে করি আপনার সমস্যাটি সম্ভবত আপনার বসন্তের কোডফিগের সাথে সম্পর্কিত l

দস্তাবেজগুলি উদ্ধৃত করুন

যদি স্প্রিং.কনফিগ.লোকেশন ডিরেক্টরি থাকে (ফাইলগুলির বিপরীতে) সেগুলি / / এ শেষ হওয়া উচিত এবং এটি লোড হওয়ার আগে বসন্তকনফিগ.নাম থেকে প্রাপ্ত নামগুলির সাথে সংযুক্ত করা হবে)।

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files


এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ। যাইহোক, আমি যখন -Dspring.profiles.active = স্টেজিং -Dspring.config.location = সি: \ কনফিগার run চালায় আমাকেও একই সমস্যা দেয়। এমনকি সক্রিয় প্রোফাইল প্রতিফলিত হচ্ছে না। আমি মনে করি যে কোনও কারণে আমার কমান্ড লাইনটি পার হচ্ছে না।
ও-অফ-এন

1
আপনি এই প্রশ্ন দেওয়া পরামর্শ অনুসরণ করতে bootRun args পাস করা উচিত stackoverflow.com/questions/25079244/...
JST

ধন্যবাদ. এটা সত্যিই সাহায্য করেছে।
ও-অফ-এন

4

মাইকেল ইয়িনের উত্তরটি সঠিক তবে এর থেকে আরও ভাল ব্যাখ্যা প্রয়োজন বলে মনে হচ্ছে!

আপনারা উল্লেখ করেছেন যে -Dজেভিএম প্যারামিটারগুলি নির্দিষ্ট করার সঠিক উপায় এবং আপনি একেবারে সঠিক। মাইকেল স্প্রিং বুট প্রোফাইল ডকুমেন্টেশনে উল্লিখিত হিসাবে ঠিক আছে ।

ডকুমেন্টেশনে যা পরিষ্কার নয়, এটি কোন ধরণের প্যারামিটার: এটি --spring.profiles.activeকোনও স্ট্যান্ডার্ড জেভিএম প্যারামিটার নয় তাই যদি আপনি এটির আইডিই ব্যবহার করতে চান তবে সঠিক ক্ষেত্রগুলি পূরণ করুন (অর্থাত্ প্রোগ্রামের আর্গুমেন্ট)


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