Web

메이븐(Maven) 이란?

superbono 2021. 4. 29. 13:20

* 메이븐의 정의

아파치 재단에서 만든 메이븐은 자바 프로젝트 관리 도구이다. 자바에서 주로 사용되긴 하나 C#, Ruby, Scala 등 기타 언어로 작성된 프로젝트를 빌드하고 관리할 수도 있다. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다. 

 

* 메이븐의 이점

프로젝트의 규모가 커서 많은 개발자들이 개발에 참여할 경우 개발 환경(개발에 필요한 jar 파일, 또는 그 파일들의 버전) 등이 모두 다르고 그걸 일일히 수동으로 맞추려면 굉장히 까다롭고 힘든 시간 낭비가 될 것이다. maven을 사용하면 그러한 문제를 손쉽게 해결할 수 있다. 필요한 라이브러리들을 pom.xml에 정의해놓으면 알아서 네트워크를 통해 자동으로 다운 및 관리해준다. 

 

* 자바에서의 메이븐 사용

메이븐 소프트웨어 도구는 자바 프로젝트를 위해 이러한 디렉터리 구조를 자동으로 생성한다. 

 - project home: pom.xml 및 모든 하위 디렉터리를 포함한다. 

 - src/main/java: 프로젝트에 제공 가능한 java 소스 코드가 들어간다. 

 - src/main/resources: 프로젝트에 대한 결과물 리소스 (예: 속성 파일)이 들어간다. 

 - src/test/java: 프로젝트에 대한 테스트 자바 소스 코드 (예: JUnit, TestNG 테스트 케이스)를 포함한다. 

 - src/test/java: 테스트에 필요한 리소스가 포함되어 있다. 

 

 

 

pom.xml 예

<project>
  <!-- model version is always 4.0.0 for Maven 2.x POMs -->
  <modelVersion>4.0.0</modelVersion>

  <!-- project coordinates, i.e. a group of values which
       uniquely identify this project -->

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>

  <!-- library dependencies -->

  <dependencies>
    <dependency>

      <!-- coordinates of the required library -->

      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>

      <!-- this dependency is only used for running and compiling tests -->

      <scope>test</scope>

    </dependency>
  </dependencies>
</project>

'Web' 카테고리의 다른 글

MVC vs MVVM  (0) 2021.05.12
REST(Representatilnal State Transfer) API  (0) 2021.05.04
IoC(Inversion of Control)/DI  (0) 2021.04.29
Spring 개요  (0) 2021.04.29
sendRedirect vs forward  (0) 2021.03.31