본문 바로가기
Data Engineering/메이븐

Maven 뽀개기 4 - Maven Goals, Maven Plugins

by 무언가 하는 소소 2022. 8. 27.
728x90
반응형

 

 

전편

 2022.08.22 - [Data Engineering/Maven] - Maven 뽀개기 3 - POM

 

 

1. Maven Goals

메이븐을 보다보면 계속 골골 거리는데 처음에는 페이즈, 플러그인과 헷갈렸다. 메이븐에서 골이란 처리해야할 태스크를 의미한다. 골은 0개, 또는 한개 이상의 페이즈와 관련되어있다.  (페이즈도 마찬가지로 여러개의 골과 관련되어 있을 수 있다.) 골, 플러그인, 페이즈의 관계를 정리하면 다음과 같다. 

Goals 처리해야할 태스크를 의미한다.
Phase 라이프 사이클에서 특정 골을 달성하기 위해 거치는 단계이다.
Plugin 골들의 집합

 

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html에는 페이즈와 페이즈와 연관된 골, 그리고 골을 위한 실행을 하는 플러그인 간의 관계에 대한 정보가 있다. 그 중 일부를 캡처해서 가져왔다. 보면 compile이란 페이즈의 골은 compile이며 complier 플러그인 집합에 속해있다. 

 

메이븐 명령어 mvn 다음에는 패키지가 올 수도 있고 골이 올 수도 있다.. 만약 페이즈를 입력하면 메이븐은 해당 페이즈의 앞선 페이즈부터 해당페이즈까지 실행하며 그 페이즈들과 관련된 모든 골을 실행한다. 반면 골만 입력하면 해당 골만 실행이 된다. 예를 들어 jar:jar을 입력하면 jar 파일을 만들기 위한 작업만 수행이 되기 때문에 컴파일이 안되어있다면 에러가 뜬다. 반면 페이즈와 관련되어있지 않은 골은 단독 실행할 수 있다. 또한 여러개의 페이즈와 골을 동시에 입력하면 순차적으로 실행된다. 

#페이즈만 입력한 예
mvn compile
#골만 입력한 예
mvn compiler:compile
#동시 입력
#1.clean 페이즈를 포함한 앞선 페이즈들과 관련 골들이 실행된다
#2.이후 dependency:copy-dependencies 골이 실행된다
mvn clean dependency:copy-dependencies

 

 

2. Maven Plugins

메이븐은 모든 태스크가 플러그인에 의해 처리되는 플러그인 기반의 프레임워크다. 플러그인은 코드를 컴파일하고, 유닛테스트를 실행하고, jar 파일을 만드는 등 거의 모든 핵심기능을 수행한다. 플러그인에는 빌드 플러그인과 리포팅 플러그인이 있다.

 

1) 빌드 플러그인 (Build Plugins)

빌드 도중에 수행되는 플러그인이다. pom.xml 파일의 <build/> 에 컨피겨 되어있다.

 

2) 리포팅 플러그인 (Reporting plugin)

site 생성 중에 실행되며 pom.xml 파일의 <reporting/> 에 컨피겨 되어있다.

 

3) 플러그인 사용법

사용할 플러그인은 리포팅이냐 빌드냐에 따라 pom.xml 파일에 적어주면 된다. 필수로 적어야 하는 요소는 groupId, artifactId, version이다. 아래는 예시이다. 

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.3</version>
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
      </configuration>
    </plugin>
  </plugins>
</build>

 

 

다음편

 2022.08.24 - [Data Engineering/Maven] - Maven 뽀개기 5 - 필수 명령어

728x90
반응형

'Data Engineering > 메이븐' 카테고리의 다른 글

Maven 뽀개기 3 - POM  (0) 2022.08.26
Maven 뽀개기 2 - 간단한 실습  (0) 2022.08.24
Maven 뽀개기 1 - Maven이란? Maven 설치  (0) 2022.08.23

댓글