2016-10-04 4 views
0

저는 지금까지 약 21 개 언어로 된 1000 개가 넘는 프로젝트에서 엔터프라이즈 급 빌드 시스템을 설계하고 있습니다. 우리는 이것을 위해 gradle을 사용하고 있으며 문제가 있습니다. 우리는 gitlab 서버로 마이그레이션하고 있으며 사람들이 JAR 파일을 커밋하지 못하도록 명시 적으로 막는 시스템과 후크를 만드는 데 몇 주를 소비했습니다. 다른 라이브러리가 소스 저장소에 있습니다. (큰 긴 이야기 왜, 당신은 어떻게해서든지 정말로 걱정하지 않는다). 병이없는 Gradle Wrapper

이제 우리는 gradle/wrapper 폴더에 jar 파일없이 Gradle을 래퍼를 사용하려면 어떻게 문제

? 폴더를 지우려고했는데, 정확하게 자식 훅이 할 것이고, gradlew 클래스는 우리가 기대했던 것처럼 클래스를 찾을 수 없다.

jar없이 래퍼를 사용할 수 있습니까? 아니면 사용자가 프로젝트를 복제 할 때 래퍼를 다시 사용해야합니까? gradlew 파일이 gradle/wrapper 폴더 또는 항아리가없는 경우 자동으로 재생성되도록 설정할 수 있습니까? 그래서 기본적으로

답변

0

, 때 설정 래퍼

gradle wrapper 

을 통해 당신은 넣어 :

  • 속성을

    • 스크립트
    • Gradle을 래퍼 jar 파일

    현재 프로젝트 디렉토리에. gradle-wrapper.jar은 로컬 Gradle 배포본에서 제공됩니다. 당신이 gradle wrapper을 실행하면 You can check this in the source code

    URL jarFileSource = Wrapper.class.getResource("/gradle-wrapper.jar"); 
    if (jarFileSource == null) { 
        throw new GradleException("Cannot locate wrapper JAR resource."); 
    } 
    GFileUtils.copyURLToFile(jarFileSource, jarFileDestination); 
    

    당신은 다운로드 Gradle을 실행하기 위해 그 항아리에서 기본 클래스를 호출합니다. 따라서 기술적으로 SH 및 BASH 스크립트를 수정하여 Github 저장소에서 Java 실행 이전에 래퍼 파일을 다운로드 할 수 있습니다 (파일이없는 경우에만 가능함). 나는 실제로 그 일을했지만 효과가 있었지만 오류가 발생하기 쉬운 방법을 확신 할 수는 없었다. Github이 앞으로 URL을 변경하지 않을지는 모르겠습니다. 방금 gradlew.sh에 다음 스 니펫을 추가했습니다. 어쨌든 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 라인

    if [ ! -f "gradle/wrapper/gradle-wrapper.jar" ] 
    then 
        curl https://raw.githubusercontent.com/gradle/gradle/master/gradle/wrapper/gradle-wrapper.jar -o $APP_HOME/gradle/wrapper/gradle-wrapper.jar 
    fi 
    

    하기 전에, 래퍼 파일은 56K를 가지고 있으며, 그것은 사람들이 Git 저장소에 넣어 수 있도록 가능한 한 작게 설계되었다. 즉, 단순히 GradleWrapperMain를 호출로

  • +0

    감사합니다. 나는이 기회를 제공 할 것입니다. 우리는 내부 dist 서버에서 배포 할 수 있도록 배포 할 예정입니다. 나뿐만 아니라 뭔가 래퍼 스크립트를 읽을 수도 어쩌면 내가 그것을 포트 수 있습니다. clone hook은 gradlew 파일이 존재 하는지를 확인한 후 clone에서 다시 찾았습니다. 나는 그것을 할 것이다. 그리고 여기에 남용되는 길고 분명한 습관을 가지고 있기 때문에 흰색 목록이없는 우리의 병 필터 시스템을 특별히 설계했습니다. – scphantm

    0

    gradlew 스크립트가 gradle-wrapper.jar에 따라, 당신이 그것에 대해 걱정하고 당신의 후크 화이트리스트와 저장소에이를 수 있도록이 특정 JAR 파일을 추가하지한다고 생각했다되고 JAR에서. 따라서 JAR없이 래퍼 스크립트를 사용할 수 없습니다. 그러나 this script을 사용하여 래퍼를 "부트 스트랩"할 수 있습니다.