기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
프로젝트 폴더 구성
Tomcat 서버에 배포할 경우 컴파일된 Java Platform Enterprise Edition(Java EE) 웹 애플리케이션 아카이브(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) 파일이 포함되어 있습니다. 또한 스타일 시트 및 부트스트랩
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