2 votes

Sauter lein uberjar lorsque les sources sont inchangées ?

Est-il possible de faire lein uberjar ne pas créer un jar si aucune modification n'a été apportée depuis le jar précédent ?

Soit comme une fonctionnalité de leiningen, soit avec un script bash ?

Mon cas d'utilisation spécifique est que j'appelle lein à partir d'un système de construction CMake d'un plus grand projet.

execute_process(COMMAND lein uberjar
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

Toutes les sources C++ sont ignorées si elles n'ont pas changé, mais les uberjars continuent d'être créés.

1voto

sw1nn Points 4563

La commande find vous permettra de trouver tous les fichiers qui sont plus récents qu'un autre fichier.

Un script construit sur cette base pourrait ressembler à quelque chose comme ceci :

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

Si votre projet a des dépendances d'instantanés, vous sauterez la vérification qui détermine si vous devez mettre à jour vos instantanés à partir du dépôt central.

Je pense que vous feriez mieux de prendre le risque de construire l'uberjar à chaque fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X