2017-03-06 3 views
0

분할 빌드 대 실행 환경이있는 컨테이너 기반 CI/CD 시스템으로 Gradle을 설정하고 있습니다. 빌드시 프로젝트의 디스크는 쓰기 가능합니다. 런타임에는 선택한 디렉토리 만 쓰기 가능하며 빌드하는 동안 해당 디렉토리를 사용할 수 없습니다. 둘 사이의 명확한 분리입니다.실행할 때 gradle wrapper가 쓰기 가능한 파일은 무엇입니까?

제가 실행중인 문제는 빌드 단계에서 gradlew build을 실행하면 작동하지만 (읽기 전용 파일 시스템에서) 프로덕션 환경에서 gradlew run을 실행하면 실패합니다. 특히, 런타임에 프로젝트를 다시 컴파일하려고 시도하고 실패합니다 (당연히 파일 시스템이 읽기 전용이므로). 하지만 컴파일 된 경우 다시 컴파일하는 이유는 무엇입니까?

build.gradle 디렉토리를 모두 런타임 기록 가능으로 만들려고했습니다. 그러면 작동하고 gradlew은 전체 시스템을 두 번 다시 컴파일하고 해당 디렉토리에 쓰고 실행합니다. 그런 다음 build 디렉터리를 다시 읽기 전용으로 설정하면 작업이 계속됩니다. 그게 내게는 런타임에 쓰기가 가능해야하는 .gradle의 일부분을 제안하지만, 지금까지는 "모든 것과 모든 것"이외의 다른 것을 사용하는 조합을 찾지 못했습니다. 분명히 바람직하지 않습니다. (한 번 빌드를 한 다음 디렉토리 마운트를 만지작 거리는 것은 반복적 인 빌드가 아니기 때문에 생산 연습으로는 유용하지 않습니다.)

저는 아직 Gradle을 처음 접했을뿐입니다. 그 원인은. 가장 좋은 이론은 gradlew은 처음에 gradle을 다시 다운로드하려는 것입니다 (아마도 이미 .gradle에 있긴 하지만요?). 존재하는 모든 기존 파일을 건너 뛸 수 있습니다. 따라서 build 디렉터리가 읽기 전용 인 경우에도 하나의 성공적인 빌드를 사용하면 향후 빌드에서이 빌드를 수정할 수 있습니다.

제 질문은 대체로 .gradle의 일부가 읽기 전용 환경에서 작동하도록 Gradle 작성 응용 프로그램을 실행하기 위해 런타임 작성이 가능해야한다는 것입니다. 또는보다 일반적으로, Gradle 작성 응용 프로그램을 읽기 전용 환경에서 작동하게하려면 어떻게합니까?

+0

프로덕션 환경에서 프로젝트를 실행하려면 gradlew run을 사용하지 않아야합니다. 빌드에 의해 생성 된 인공물을 실행/배치하면됩니다. –

답변

1

제작시 프로젝트를 실행하기 위해 Gradle을 사용하지 마십시오. Gradle은 빌드 도구이며 application 플러그인으로 추가 된 run 작업은 테스트 용도로만 사용됩니다. 배포 가능 패키지를 생성 한 다음 프로덕션 시간에 사용하지 않고 프로젝트 디렉토리를 모두 사용하려면 최소한 빌드 시간에 installDist을 사용하고 build/install/...에 어셈블 할 때 프로젝트를 실행하십시오. 생성 된 시작 스크립트.