当来源不变时,请跳过lein uberjar?

时间:2012-03-22 14:04:21

标签: clojure cmake leiningen

如果自上一个罐子制作以来没有进行任何更改,是否可以使lein uberjar不创建jar?

作为leiningen的一个功能还是使用一些bash脚本?

我的具体用例是我在一个大型项目的CMake构建系统中调用lein。

execute_process(COMMAND lein uberjar
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

如果没有更改,则会跳过所有C ++源代码,但不断发布uberjars。

1 个答案:

答案 0 :(得分: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

如果您的项目具有快照依赖项,您将跳过确定是否应该从中央存储库更新快照的检查。

我怀疑你每次只是打造过去的时候会更好。