4.9 KiB
4.9 KiB
java, java-library, application, war 플러그인
Gradle은 다양한 **플러그인(Plugin)**을 제공하여 프로젝트의 빌드, 실행, 배포 과정을 자동화할 수 있도록 돕는다.
그중에서도 Java 프로젝트를 위한 java, java-library, application, war 플러그인은 각각 일반 Java 애플리케이션, 라이브러리, 실행형 애플리케이션, 웹 애플리케이션을 관리하는 데 사용된다.
java 플러그인
java 플러그인은 일반적인 Java 프로젝트를 빌드할 때 사용된다.
이 플러그인을 적용하면 컴파일, 테스트, JAR 생성, 패키징 등의 작업을 자동으로 수행할 수 있다.
build.gradle.kts :
plugins {
java
}
group = "com.example"
version = "1.0.0"
repositories {
mavenCentral()
}
dependencies {
implementation("org.apache.commons:commons-lang3:3.12.0")
testImplementation("junit:junit:4.13.2")
}
주요 태스크
| 태스크 | 설명 |
|---|---|
compileJava |
Java 소스 코드 컴파일 |
processResources |
src/main/resources/의 리소스를 build 폴더로 복사 |
classes |
compileJava + processResources 실행 |
jar |
JAR 파일 생성 (build/libs/에 저장됨) |
test |
단위 테스트 실행 |
clean |
build/ 디렉터리 삭제 |
build |
전체 빌드 (compileJava, test, jar 포함) |
java-library 플러그인
java-library 플러그인은 라이브러리 개발을 위한 플러그인으로, java 플러그인의 확장판이다.
api와implementation의존성을 구분할 수 있도록 지원한다.
api vs implementation
api: 외부 프로젝트에서도 접근할 수 있는 공개 APIimplementation: 내부에서만 사용하는 의존성
build.gradle.kts
plugins {
`java-library`
}
group = "com.example"
version = "1.0.0"
repositories {
mavenCentral()
}
dependencies {
api("com.google.guava:guava:32.0.1-jre") // 외부 프로젝트에서도 사용 가능
implementation("org.apache.commons:commons-lang3:3.12.0") // 내부에서만 사용
}
주요 태스크
| 태스크 | 설명 |
|---|---|
assemble |
JAR 파일 생성 |
publish |
라이브러리를 배포 (예: Maven Central) |
application 플러그인
application 플러그인은 실행 가능한 Java 애플리케이션을 만들기 위해 사용된다.
mainClass를 지정하여run태스크를 사용할 수 있다.
build.gradle.kts
plugins {
application
}
group = "com.example"
version = "1.0.0"
repositories {
mavenCentral()
}
dependencies {
implementation("org.apache.commons:commons-lang3:3.12.0")
}
application {
mainClass.set("com.example.Main") // 실행할 메인 클래스
}
주요 태스크
| 태스크 | 설명 |
|---|---|
run |
애플리케이션 실행 |
installDist |
실행 가능한 배포 패키지 생성 (build/install/) |
distZip |
.zip 패키지로 애플리케이션 배포 |
distTar |
.tar 패키지로 애플리케이션 배포 |
war 플러그인
war 플러그인은 웹 애플리케이션(WAR 파일) 배포를 위한 플러그인이다.
- Servlet 기반 웹 애플리케이션을 패키징할 때 사용된다.
java플러그인을 자동으로 포함한다.
build.gradle.kts
plugins {
war
}
group = "com.example"
version = "1.0.0"
repositories {
mavenCentral()
}
dependencies {
providedCompile("javax.servlet:javax.servlet-api:4.0.1") // 컨테이너가 제공하는 의존성
implementation("org.springframework:spring-webmvc:5.3.23") // 웹 MVC 프레임워크
}
디렉터리 구조
src/
├── main/
│ ├── java/ <-- Java 소스 코드
│ ├── resources/ <-- 정적 리소스
│ ├── webapp/ <-- `WEB-INF` 및 JSP 파일
│ ├── WEB-INF/
│ │ ├── web.xml
│ ├── index.jsp
주요 태스크
| 태스크 | 설명 |
|---|---|
war |
WAR 파일 생성 (build/libs/app-1.0.0.war) |
explodedWar |
압축되지 않은 WAR 파일 생성 |
assemble |
전체 빌드 실행 |
플러그인 비교 정리
| 플러그인 | 용도 | 실행 방식 | 주요 태스크 |
|---|---|---|---|
java |
일반 Java 프로젝트 | 실행 X, JAR만 생성 | compileJava, jar, build |
java-library |
라이브러리 개발 | 실행 X, API 관리 | publish, jar, build |
application |
실행 가능한 앱 | run으로 실행 가능 |
run, installDist, distZip |
war |
웹 애플리케이션 | WAR 파일 생성 | war, explodedWar |