বিল্ড.এসবিটি এবং বিল্ড.স্কালার মধ্যে পার্থক্য কী?


107

আমি স্কেলা শিখতে শুরু করেছি এবং প্রায় প্রতিটি টিউটোরিয়ালে আমি এমন একটি build.sbtফাইল দেখি যা প্রকল্প সেটিংস বর্ণনা করে। তবে এখন আমি giter8টেমপ্লেট থেকে একটি প্রকল্প ইনস্টল করে তৈরি করেছি। এবং টেমপ্লেট মিস build.sbtফাইল থেকে উত্পন্ন প্রকল্প , তবে এটি রয়েছে build.scala(যা একই উদ্দেশ্যে ব্যবহৃত হয় তবে এটি আরও নমনীয়)।

সুতরাং এর মধ্যে পার্থক্য কি build.sbtএবং build.scala?
কোনটি বেশি পছন্দ এবং কেন?

উত্তর:


95

একটি সংক্ষিপ্ত উদাহরণ দিতে, এটি build.sbt:

name := "hello"

version := "1.0"

একটি সংক্ষিপ্ত বিবরণ এটি প্রায় সমান project/Build.scala:

import sbt._
import Keys._

object Build extends Build {
  lazy val root = Project(id = "root", base = file(".")).settings(
    name := "hello",
    version := "1.0"      
  )
}

.sbtফাইল এছাড়াও অন্তর্ভুক্ত করতে পারে valS, lazy vals, এবং defগুলি (কিন্তু objects এবং classস্প্যানিশ ভাষায়)।

".Scala বিল্ড সংজ্ঞা" নামক এসবিটি ডকুমেন্টটি দেখুন , বিশেষত "বিল্ড। বিল্ড.স্কালায় বিল্ডিং বিস্কুট সম্পর্কিত" বিভাগটি দেখুন।

.scalaআপনি যদি স্কেলার সম্পূর্ণরূপে প্রকাশ করতে চান এমন কোনও জটিল কাজ করছেন তবে একটি বিল্ড সংজ্ঞা বিবেচনা করুন ।


6
"বিল্ড.এসবিটি খুব কমই যথেষ্ট পর্যাপ্ত হয়ে যায়" এ সত্য, 0.12 এবং এর আগে এটি সত্য যে একবার আপনি কার্যগুলি বা মাল্টি-মডিউল বিল্ডগুলি সংজ্ঞায়িত করতে চাইলে আপনার .scala ফাইলগুলি দরকার। এটি 0.13 এ সম্বোধন করা উচিত, যেখানে আপনি এখন ভ্যালস এবং একাধিক প্রকল্প সংজ্ঞায়িত করতে পারেন। আপনি অবশ্যই এখনও .scala দিয়ে শুরু করতে স্বাগত।
মার্ক Harrah


31

জুলাই 2016 আপডেট (3 বছর পরে)

Build.scalaআনুষ্ঠানিকভাবে এসবিটি 0.13.12অবচয় করা হয়েছে

Buildবৈশিষ্ট্য পক্ষে অবচিত .sbtবিন্যাস

PR 2530 যে অবমূল্যায়ন প্রয়োগ করে।
" পরিশিষ্ট: .scalaবিল্ড সংজ্ঞা " আপডেট করা হয়েছে।


13

.sbtগুলি যখন সংকলন করা হচ্ছে তখন তারা সেগুলি এর আগে ডিরেক্টরির .scalaভিতরে থাকা ফাইলগুলির সাথে একত্রীকরণের আগে project। তারা রিকার্সিভ কর্ম ব্যবহৃত করা যাবে না, যে, আপনি কাস্টমাইজ করা যাবে না sbtথেকে sbt, উদাহরণস্বরূপ। আরও বিস্তারিত তথ্যের জন্য, পড়ুন সম্পর্কিত বিভাগটি এসবিটি ডকুমেন্টেশন হিসাবে বিবেচনা করুন :

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