2012-03-22 1 views
2

lein 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 

경우에 당신은 당신이 중앙의 repo에서 스냅 샷을 업데이트해야하는지 여부를 결정하는 검사를 건너 뜁니다.

매번 uberjar를 구축하는 것이 좋을 것 같습니다.

+0

@Annan 편집이 잘못되었으므로 첫 번째 arg는 검색 할 디렉토리이므로 project.clj를 추가해도 의미가 없습니다. – sw1nn

+0

내가 틀렸다고 생각되면 편집을 롤백하거나 수정하십시오. 여러 경로를 첫 번째 매개 변수로 찾기 위해 전달할 수 있다고 생각합니다.이 경로는 디렉토리, 파일 또는 패턴이 될 수 있습니다. – Annan

+0

좋아, 실제로 내가 말한 것을 테스트 한 결과, 수정 된 상태로 ;-) 귀하의 모드가 예상대로 작동합니다. 감사! – sw1nn