2012-03-22 39 views
2

如果自上一個jar創建以來沒有進行任何更改,是否可以使lein uberjar不創建jar?當來源不變時跳過lebur uberjar?

既可以作爲leiningen的特性,也可以使用一些bash腳本?

我的具體用例是我從一個大型項目的CMake構建系統中調用lein。

execute_process(COMMAND lein uberjar 
       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) 

所有C++源代碼被跳過,如果他們沒有改變,但uberjars不斷正在取得進展。

回答

1

find命令將允許您查找比另一個文件更新的所有文件。

建立在一個腳本可能會是這個樣子:

#!/bin/sh 

UBERJAR=*-standalone.jar 

if [ -f ${UBERJAR} ]; then 
    modified_files=$(find src project.clj -newer ${UBERJAR}) 

    if [ ${#modified_files} -eq 0 ]; then 
     echo "Skipping uberjar because no files modified" 
     exit 0 
    fi 
fi 

lein uberjar 

如果你的項目有快照依賴你會跳過決定你是否應該從中央回購更新快照檢查。

我懷疑你最好每次都要打造uberjar。

+0

@Annan你的編輯不正確,找到的第一個arg是要從中搜索的目錄,所以添加project.clj沒有任何意義。 – sw1nn 2012-03-24 17:54:43

+0

如果您認爲我不正確,請隨時回滾編輯或修改它。我相信可以傳遞多個路徑作爲第一個參數,這些路徑可以是目錄,文件或模式。 – Annan 2012-03-24 18:14:32

+0

好的,經過實際測試我說的我站得更正;-)你的mod按預期工作。謝謝! – sw1nn 2012-03-24 19:46:05