2013-01-25 12 views
8

पर एसबीटी बिल्ड नंबर कैसे जोड़ें I want to Play my play के पाद लेख में बिल्ड जानकारी जोड़ना चाहूंगा! आवेदन (प्लेला 2.0.4 स्कैला के साथ), जैसा कि स्टैक ओवरफ्लो पर किया गया है। मैं एसबीटी के लिए नया हूं और बस खुश हूं कि ज्यादातर समय सबकुछ एक आकर्षण की तरह काम करता है। :-)प्ले 2.0: पेज फूटर

असल में, मैं project/Build.scala से एप्लिकेशन संस्करण निकालना चाहता हूं, वर्तमान दिनांक जोड़ें, और आखिर में एक बिल्ड नंबर जोड़ें (जो स्वचालित रूप से बढ़ी है, लेकिन यह पोस्ट करने के लिए किसी अन्य प्रश्न का विषय हो सकता है)। यह जानकारी conf/build-info.conf फ़ाइल में जोड़ दी जानी चाहिए जो मुख्य conf/application.conf में शामिल है। मुझे पता है कि एप्लिकेशन कॉन्फ़िगरेशन से बिल्ड जानकारी निकालने और पृष्ठों में जोड़ने के लिए कैसे।

आपके समय के लिए धन्यवाद!

उत्तर

2

मैं bash स्क्रिप्ट के विस्तार के साथ आया जो वास्तविक स्टेजिंग और मेरे आवेदन की शुरुआत करता है, इस प्रकार एसबीटी/प्ले शुरू करने से पहले बिल्ड जानकारी प्रदान करता है। यह एक्सटेंशन Mercurial रेपो से कार्यशील निर्देशिका के संशोधन को पकड़ता है और वर्तमान दिनांक के साथ फ़ाइल conf/build-info.conf में लिखता है। मैं स्वचालित रूप से बढ़ी हुई बिल्ड काउंटर का उपयोग करने से बचना चाहता हूं क्योंकि रेपो द्वारा प्रदान की गई जानकारी पर्याप्त होनी चाहिए।

#!/bin/bash 
CHANGESET=`hg tip | grep changeset` 
while IFS=":" read -ra PARTS; do 
    REV=`echo "${PARTS[1]}" | tr -d ' '`@`hg branch` 
    echo application.build=\"`date +"%Y-%m-%d"` "[$REV]"\" > conf/build-info.conf 
done <<< "$CHANGESET" 

एक फ़ाइल में जिसके परिणामस्वरूप

application.build="2013-01-25 [[email protected]]" 

यह स्क्रिप्ट आसानी से grep के लिए आवेदन संस्करण के लिए फ़ाइल project/Build.scala बढ़ाया और किया जा सकता है के लिए एक लाइन समान containg निर्माण की जानकारी बनाई में यह शामिल है।

कॉपी/पेस्ट और अनुकूलित/सुधार करने के लिए स्वतंत्र महसूस करें। कोई विशेषता आवश्यक नहीं है लेकिन यहां प्रतिक्रिया हमेशा स्वागत है :-)

1

संकलन समय पर अपनी परियोजना में निर्माण जानकारी जोड़ने का एक आसान तरीका है, sbt-buildinfo नामक एक एसबीटी प्लगइन का उपयोग करना।

पहले अपने एसबीटी संस्करण के आधार पर उचित संस्करण चुनें, और निर्देशों का पालन करें। डिफ़ॉल्ट रूप से, केवल आपका आवेदन name, version, scalaVersion और sbtVersion संकलित समय पर दस्तावेज किए गए हैं।

को जोड़ने के लिए build time, dependencies या किसी अन्य कस्टम मूल्य, आप अपने build.sbt लिए इस कोड को जोड़ने और इसे अनुकूलित कर सकते हैं:

buildInfoKeys ++= Seq[BuildInfoKey](
     resolvers, 
     libraryDependencies in Test, 
     BuildInfoKey.map(name) { case (k, v) => "project" + k.capitalize -> v.capitalize }, 
     "custom" -> 12345, // computed at project load time 
     BuildInfoKey.action("buildTime") { 
     System.currentTimeMillis 
     } // re-computed each time at compile 
    ) 
संबंधित मुद्दे