프로젝트 폴더 구성 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

프로젝트 폴더 구성

Tomcat 서버에 배포할 경우 컴파일된 Java Platform Enterprise Edition(Java EE) 웹 애플리케이션 아카이브(WAR 파일)를 특정 지침에 따라 구성해야 합니다. 프로젝트 디렉터리가 동일한 표준을 충족할 필요는 없지만, 컴파일과 패키징을 단순화하려면 동일한 방식으로 구성하는 것이 좋습니다. 프로젝트 폴더를 WAR 파일 콘텐츠와 같이 구성하면 파일 간의 관련성과 웹 서버에서의 파일 동작 방식을 이해하는 데도 도움이 됩니다.

다음 권장 계층 구조에서 웹 애플리케이션의 소스 코드는 빌드 스크립트 및 이것이 생성하는 WAR 파일과 격리되도록 src 디렉터리에 배치되어 있습니다.

~/workspace/my-app/ |-- build.sh - Build script that compiles classes and creates a WAR |-- README.MD - Readme file with information about your project, notes |-- ROOT.war - Source bundle artifact created by build.sh `-- src - Source code folder |-- WEB-INF - Folder for private supporting files | |-- classes - Compiled classes | |-- lib - JAR libraries | |-- tags - Tag files | |-- tlds - Tag Library Descriptor files | `-- web.xml - Deployment Descriptor |-- com - Uncompiled classes |-- css - Style sheets |-- images - Image files |-- js - JavaScript files `-- default.jsp - JSP (JavaServer Pages) webpage

src 폴더 콘텐츠는 com 폴더를 제외하고 패키징하여 서버에 배포하는 콘텐츠와 일치합니다. com 폴더에는 컴파일되지 않은 클래스(.java 파일)가 포함되어 있습니다. 애플리케이션 코드에서 액세스할 수 있으려면 이 클래스를 컴파일하여 WEB-INF/classes 디렉터리에 배치해야 합니다.

WEB-INF 디렉터리에는 웹 서버에서 공개적으로 제공되지 않는 코드와 구성이 포함되어 있습니다. 소스 디렉터리의 루트에 있는 다른 폴더(css, images, js)는 웹 서버의 해당 경로에서 공개적으로 사용할 수 있습니다.

다음 예제는 더 많은 파일과 하위 디렉터리가 포함되어 있는 점을 제외하고 앞서 다룬 프로젝트 디렉터리와 동일합니다. 이 예제 프로젝트에는 단순한 태그, 모델 및 지원 클래스, record 리소스에 대한 Java 서버 페이지(JSP) 파일이 포함되어 있습니다. 또한 스타일 시트 및 부트스트랩의 JavaScript, 기본 JSP 파일, 404 오류에 대한 오류 페이지도 포함되어 있습니다.

WEB-INF/lib에는 PostgreSQL용 JDBC(Java Database Connectivity) 드라이브가 포함된 Java 아카이브(JAR) 파일이 포함되어 있습니다. 클래스 파일이 아직 컴파일되지 않았으므로 WEB-INF/classes는 비어 있습니다.

~/workspace/my-app/ |-- build.sh |-- README.MD |-- ROOT.war `-- src |-- WEB-INF | |-- classes | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- com | `-- myapp | |-- model | | `-- Record.java | `-- web | `-- ListRecords.java |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

셸 스크립트를 사용하여 WAR 파일 빌드

build.sh는 Java 클래스를 컴파일하고, WAR 파일을 구성하며, 로컬 테스트를 위해 이를 Tomcat의 webapps 디렉터리에 복사하는 매우 단순한 shell 스크립트입니다.

cd src javac -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/web/ListRecords.java jar -cvf ROOT.war *.jsp images css js WEB-INF cp ROOT.war /Library/Tomcat/webapps mv ROOT.war ../

WAR 파일 내부에서 src 폴더를 제외하고, 앞서 다룬 예제의 src/com 디렉터리에 있는 것과 동일한 구조를 볼 수 있습니다. jar 명령은 META-INF/MANIFEST.MF 파일을 자동으로 만듭니다.

~/workspace/my-app/ROOT.war |-- META-INF | `-- MANIFEST.MF |-- WEB-INF | |-- classes | | `-- com | | `-- myapp | | |-- model | | | `-- Records.class | | `-- web | | `-- ListRecords.class | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

.gitignore 사용

컴파일된 클래스 파일 및 WAR 파일을 Git 리포지토리에 커밋하거나 Git 명령 실행 시 이러한 파일에 대해 나타나는 메시지를 보지 않도록 하려면 프로젝트 폴더의 .gitignore 파일에 관련 파일 형식을 추가합니다.

~/workspace/myapp/.gitignore

*.zip *.class