빌드 툴이란?

  • 소스 코드의 빌드 과정을 자동으로 처리해주는 프로그램
  • 외부 소스코드(외부 라이브러리) 자동 추가 및 관리

 

빌드 툴이 왜 필요한가?

  • 대규모 프로젝트에선 빌드프로세스를 수동으로 호출이 실용적이지 않습니다.
  • 무엇을 빌드할지, 어떤 순서를 가지고 빌드할지, 어떤 의존성이 있는지 모두 추적하기 쉽지 않기때문입니다.
  • 빌드 툴을 사용하면 이를 일관되게 할 수 있습니다.

 

JAVA에서의 빌드 툴 종류

  • Ant
  • Maven
  • Gradle

 

Ant

  • 설정을 위해 xml을 사용합니다.
  • 간단하고 사용하기 쉽다고 합니다.
  • 단점
    • 복잡한 처리를 하려하면 빌드 스크립트가 장황해져 관리가 어렵습니다.
    • 외부 라이브러리를 관리하는 구조가 없다.

 

 

Maven

 

// xml의 예시 입니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.example</groupId>
   <artifactId>demo-maven</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>demo-maven</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.4.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>


</project>
  • Ant가 가지고있는 단점을 보완하여 만들어진 빌드 툴입니다.
  • 설정을 위해 xml을 사용합니다.
  • 외부 라이브러리를 관리할 수 있습니다.
  • 장황한 빌드 스크립트 문제를 해결했습니다.
  • 단점
    • 특정 경우에 xml이 복잡해집니다.
    • xml 자체에 한계가 있습니다. (설정 내용이 길어지고 가독성 떨어짐)

 

 

Gradle

 

// gradle 예시

buildscript {
    ext {
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group 'com.jojoldu.book'
version '1.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}
  • Maven이 가지고있는 단점을 보완하여 만들어진 빌드 툴입니다.
  • 설정할 때 xml대신에 groovy 언어를 사용합니다. (xml이 가지는 한계를 갖지 않습니다.)
  • 에시만봐도 Maven보다 가독성 면에서 뛰어나다는 장점이 있습니다.
  • 외부 라이브러리를 관리할 수 있습니다.
  • 유연하게 빌드 스크립트를 작성할 수 있습니다.
  • 캐싱이 잘되어 성능이 뛰어납니다. (실제로 Gradle이 Maven보다 최대 100배 빠르다고 합니다.)

'spring' 카테고리의 다른 글

[Spring] 간단한 웹소켓 프로그램 만들기  (0) 2021.10.28

+ Recent posts