2013-01-25 24 views
8

Tôi muốn thêm thông tin bản dựng vào chân của Play của tôi! ứng dụng (Play! 2.0.4 với Scala), tương tự như thực hiện ở đây trên stackoverflow. Tôi mới đến SBT và chỉ vui rằng hầu hết mọi thứ đều hoạt động như một sự quyến rũ. Về cơ bản, tôi muốn trích xuất phiên bản ứng dụng từ project/Build.scala, thêm ngày hiện tại và cuối cùng thêm số bản dựng (được tăng tự động, nhưng đó có thể là chủ đề của một câu hỏi khác để đăng). Thông tin này nên được thêm vào một tệp conf/build-info.conf được đưa vào chính conf/application.conf. Tôi biết cách trích xuất thông tin xây dựng từ cấu hình ứng dụng và thêm nó vào các trang.Chơi 2.0: Cách thêm số bản dựng SBT vào chân trang

Cảm ơn bạn đã dành thời gian!

Trả lời

2

Tôi đã đưa ra một phần mở rộng cho tập lệnh bash thực hiện dàn dựng và bắt đầu ứng dụng của tôi, do đó cung cấp thông tin xây dựng trước khi bắt đầu SBT/play. Phần mở rộng này lấy bản sửa đổi của thư mục làm việc ra khỏi Mercurial repo và ghi nó với ngày hiện tại vào tập tin conf/build-info.conf. Tôi đã hạn chế sử dụng bộ đếm xây dựng tăng dần tự động vì thông tin được cung cấp bởi repo là đủ.

#!/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" 

dẫn đến một tập tin có chứa có một dòng tương tự như

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

Kịch bản này có thể dễ dàng được mở rộng để grep file project/Build.scala cho phiên bản ứng dụng và bao gồm này trong thông tin xây dựng tạo ra.

Hãy sao chép/dán và điều chỉnh/cải thiện. Không yêu cầu ghi nhận nhưng thông tin phản hồi ở đây luôn được chào đón :-)

1

Cách đơn giản để thêm thông tin bản dựng vào dự án của bạn lúc biên dịch là sử dụng plugin SBT được gọi là sbt-buildinfo.

Trước tiên hãy chọn phiên bản phù hợp dựa trên phiên bản SBT của bạn và làm theo hướng dẫn. theo mặc định, chỉ ứng dụng của bạn name, version, scalaVersionsbtVersion được ghi lại trong thời gian biên dịch.

Để thêm các build time, dependencies hoặc bất kỳ giá trị tùy chỉnh khác, bạn có thể thêm mã này vào build.sbt của bạn và tùy chỉnh nó:

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 
    ) 
Các vấn đề liên quan