আপনি কীভাবে প্রস্থান না করে এসবিটি-র কোনও রান শেষ করবেন?
আমি সিটিআরএল + সি চেষ্টা করছি তবে এটি এসবিটি থেকে বেরিয়ে আসে। এসবিটি খোলা রেখে কেবল চলমান অ্যাপ্লিকেশন থেকে প্রস্থান করার কোনও উপায় আছে কি?
Ctrl + D
কেবল প্লে কাঠামোর জন্য কাজ করে।
আপনি কীভাবে প্রস্থান না করে এসবিটি-র কোনও রান শেষ করবেন?
আমি সিটিআরএল + সি চেষ্টা করছি তবে এটি এসবিটি থেকে বেরিয়ে আসে। এসবিটি খোলা রেখে কেবল চলমান অ্যাপ্লিকেশন থেকে প্রস্থান করার কোনও উপায় আছে কি?
Ctrl + D
কেবল প্লে কাঠামোর জন্য কাজ করে।
উত্তর:
ডিফল্ট কনফিগারেশনে, আপনার রান একই জেভিএমে ঘটে যা এসবিটি চলছে, সুতরাং আপনি সহজেই তাদের আলাদা করতে পারবেন না।
আপনি যদি ফোর্কিং- তে বর্ণিত হিসাবে আলাদা, কাঁটাযুক্ত জেভিএম দিয়ে নিজের রান করেন তবে আপনি যে জেভিএম (যে কোনও উপায়ে আপনার অপারেটিং সিস্টেম অফার করে) এসবিটির জেভিএমকে প্রভাবিত না করে হত্যা করতে পারেন:
fork in run := true
kill
কম্যান্ড লাইন থেকে, অথবা টাস্ক ম্যানেজার (উইন্ডোজ), অথবা ফোর্স ছাড়ো অথবা কার্যকলাপ মনিটর (Mac OS X এর), ইত্যাদি
kill -9 `ps -h | grep java | grep -v sbt-launch | grep -v grep | awk '{print $1}'`
run
সিটিআরএল + ডি
এসবিটি সংস্করণ 0.13.5 থেকে আপনি আপনার বিল্ড.এসবিটিতে যুক্ত করতে পারেন
cancelable in Global := true
এটি "সক্ষম (সত্য) হিসাবে বা সিটিটিআর + সি দিয়ে টাস্ক এক্সিকিউশন বাধা দেওয়ার (মিথ্যা) সক্ষম হিসাবে সংজ্ঞায়িত হয়। মধ্যে কী সংজ্ঞা
আপনি যদি স্কেলা 2.12.7+ ব্যবহার করেন তবে আপনি সিটিআরএল + সি সহ সংকলনটি বাতিলও করতে পারেন। রেফারেন্স https://github.com/scala/scala/pull/6479
কিছু বাগ রিপোর্ট করা হয়েছে:
এসবিটি থেকে চালিত অ্যাপ্লিকেশনটির মূল লুপের উপর আমার নিয়ন্ত্রণ থাকলে আমি নিম্নলিখিতটি দরকারী পেয়েছি।
অ্যাপ্লিকেশনটি চালানোর সময় আমি কাঁটাচামচাকে বলি (বিল্ড.এসবিটিতে):
fork in run := true
আমি এসবিটি কে এসবিটি শেল থেকে অ্যাপ্লিকেশনটিতে (বিল্ড.এসবিটিতে) ফরোয়ার্ড করতে বলি:
connectInput in run := true
পরিশেষে, অ্যাপ্লিকেশনটির মূল থ্রেডে, আমি স্টিডিন-এ-ফাইলের শেষের জন্য অপেক্ষা করি এবং তারপরে জেভিএম বন্ধ করে দেব:
while (System.in.read() != -1) {}
logger.warn("Received end-of-file on stdin. Exiting")
// optional shutdown code here
System.exit(0)
অবশ্যই, আপনি মূল থ্রেডই নয় স্ট্যান্ডিন এবং শাটডাউন পড়তে যে কোনও থ্রেড ব্যবহার করতে পারেন।
অবশেষে, এসবিটি শুরু করুন, runচ্ছিকভাবে আপনি যে সাব-প্রজেক্টটি চালাতে চান তা চালান, চালান।
এখন, আপনি যখন প্রক্রিয়াটি থামাতে চান, এসবিটি শেলটিতে CTRL-D লিখে এটির স্টিডিনটি বন্ধ করুন।
এসবিটি-রিভলবার ব্যবহার বিবেচনা করুন । আমরা এটি আমাদের সংস্থায় ব্যবহার করি এবং এটি সত্যই কার্যকর। আপনি যা জিজ্ঞাসা করছেন তার জন্য এটি করা যেতে পারে:
reStart
reStop
বিল্ড.এসবিটি ফাইলটি কনফিগার করার প্রয়োজন ছাড়াই।
আপনি এই প্লাগইনটি যুক্ত করে ব্যবহার করতে পারেন:
addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")
আপনার প্রকল্পে / plugins.sbt
Ctrl+D
কাজ করে না.