오늘의 옷 프로젝트를 ec2 인스턴스에 배포하는 과정중에 생긴 에러이다. git에서 ec2 서버로 클론해온 후, 테스트가 안깨지는지 보기 위해서 ./gradlew test
를 했는데 다음과 같은 에러가 났다.
gradle wrapper
가 실행되지 않는 상황이여서, gradle
=> wrapper
파일로 이동해서 파일 목록을 살펴보았다.
목록을 보니, 원래 같으면 있어야 할 gradle-wrapper.jar
파일이 빠져있는 것이 원인이였던 것 같다.
gradlew
는 새로운 환경에서 프로젝트를 설정할 때 java
나 gradle
을 설치하지 않고 바로 빌드할 수 있게 해주는 역할을 하게 되는데, 이는 환경에 종속적이지 않게 된다는 큰 장점을 지니게 된다. 아래는 gradlew
를 생성하면 나오는 파일 구조이다.
├── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat
build gradle
: 기본 빌드 파일이며, 이곳에 프로젝트의 빌드에 대한 내용을 명시한다.settings.gradle
: 프로젝트의 설정 정보 파일이다. 멀티 프로젝트를 구성할 때 하위 프로젝트들과의 관계를 여기서 서술한다.rootProject.name = "MyApp"
gradle-wrapper.jar
: gradlew
명령어로 프로젝트를 빌드 할 때 해당 파일을 참조하여 설정 파일을 구성하므로 새로운 환경에 대한 영향이 없다.gradlew
: 유닉스용 실행 shell script이며,
./gradlew build
로 실행한다.gradlew.bat
: 윈도우용 실행 batch script
이다.gradle wrapper가 누락되어 발생하는 문제는 단순히 gradle wrapper
를 다시 만들어 주기만 하면 해결된다. 따라서, 프로젝트 루트 경로에서 아래의 명령어를 실행해 gradle wrapper을 생성해주었다.
sudo yum install wget
sudo yum install unzip
//gradle 다운
sudo wget https://services.gradle.org/distributions/gradle-7.1.1-bin.zip
// 설치 디렉토리 생성
sudo mkdir /opt/gradle
// 압축 해제
sudo unzip -d /opt/gradle gradle-7.1.1-bin.zip
// 링크 연결
$ sudo ln -s /opt/gradle/gradle-7.1.1 /opt/gradle/latest
터미널에서 gradle을 입력했을 때 위에서 설치한 버전으로 연결하는 과정이다.
$ sudo nano /etc/profile.d/gradle.sh
위 명령으로 파일을 열고, 다음의 내용을 저장한다. save and exit는 ctrl+X
를 눌러주면 된다.
export GRADLE_HOME=/opt/gradle/latest
export PATH=${GRADLE_HOME}/bin:${PATH}
//스크립트에 Executable 권한을 부여
$ sudo chmod +x /etc/profile.d/gradle.sh
//source 명령어로 스크립트를 로딩
$ source /etc/profile.d/gradle.sh
// 아래 두 파일 실행 권한 설정
$ sudo chmod 777 gradle-wrapper.properties
$ sudo chmod 777 gradlew.bat
$ gradle wrap
성공..!!
출처
https://codechacha.com/ko/installing-gradle/
https://pompitzz.github.io/blog/Java/awsEc2InstallJDK11.html