Пропустить lein uberjar, когда источники не изменились? - PullRequest
2 голосов
/ 22 марта 2012

Можно ли заставить lein uberjar не создавать jar-файл, если с момента создания предыдущего jar-файла не было сделано никаких изменений?

Либо как функция leiningen, либо с помощью некоторых сценариев bash?1005 * Мой конкретный пример использования - это вызов lein из системы сборки CMake более крупного проекта.

execute_process(COMMAND lein uberjar
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

Все исходные коды C ++ пропускаются, если они не изменились, но uberjars продолжают работать.сделал.

1 Ответ

1 голос
/ 23 марта 2012

Команда 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

Если у вашего проекта есть зависимости от снимков, вы пропустите проверку, которая определяет, следует ли обновлять снимки из центрального репо.

Я подозреваю, что вам было бы лучше, если бы вы каждый раз получали удар по созданию уберджара.

...