spring pom.xml

-·2023년 2월 14일
0

지난번에 parent태그에 대해서 찾아봤지만 pom에는 다른태그들도 많다.

한번 정리해보는 시간을 가져보자

<project ...>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mytest</groupId>
  <artifactId>TestBase</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>TestBase</name>
  <description>TestBase</description>
	<properties>
		...
	</properties>
	<dependencies>
		...
	</dependencies>
	<build>
		<plugins>
			...
		</plugins>
	</build>
</project>

대충 써보면 이정도가 기본 구성이 될수있을꺼같다.

각 태그가 무슨역할을 하는지 알아보자

<project>

project태그에는 프로젝트의 정보를 기술하면된다.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mytest</groupId>
    <artifactId>TestBase</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    ...
</project>

사실 최소한의 구성이라고하면 이렇게 project태그만 채워줘도 된다. 하지만 이렇게 쓰는경우는 없지 않은가?

예시에 적어놓은것도 있지만 가능한 속성은 더 많다.

  • modelVersion

    maven의 pom.xml의 모델버전이다. 현재는 4.0.0

  • groupId

    프로젝트를 생성한 그룹명, 프로젝트의 식별값

    일반적으로 회사이름을 거꾸로해서 쓴다.

  • artifactId

    버전정보를 생략한 jar파일의 이름, 프로젝트의 이름으로 사용합니다.

    소문자와 특수문자를 조합해서 사용

  • version

    프로젝트 버전

  • packaging

    프로젝트를 어떤형태로 패키징할지 packaging type을 적어준다.

    jar, war, ear, pom, rar, ejb...

    타입에 따라서 다른형태로 패키징이 된다.

    본문에서는 war로 해놨으니 war가 된다.

    부모 pom이라면 pom으로 해야된다.

  • name

    프로그램이름

    보통 artifactId와 같이 갈것이다.

  • url

    프로젝트와 관련된 Web 사이트의 주소이다. 기본적으로 Apache Maven의 Web 사이트의 주소가 지정되어 있다.

  • description

    말그대로 설명이다. 주석같은 느낌?

<properties>

해당 maven 내부에서 반복적으로 사용될 상수 값을 정의할 때 사용

ex) 공통으로 사용할 버전, 설정값

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    ...
</properties>

이렇게 공통으로 모아서 정리해두면 보기도 쉽고 정의하기도 편하다.

<dependencies>

의존성을 정의하는부분 사실이게 핵심이라고 할 수있다.

  • 프로젝트와 의존관계에 있는 라이브러리들을 모아 관리합니다.

  • <dependency>들을 모아서 관리한다.

  • <dependency>태그에는 라이브러리 정보를 기술하며 최소 groupId, artifactId, version 정보가 필요함

    parent로 상속구조만들면 생략가능

<dependencies>
    <dependency>
        <groupId>그룹 ID</groupId>
        <artifactId>아티팩트 ID</artifactId>
        <version>버전</version>
        <scope>이 라이브러리가 이용되는 범위</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
        <scope>provided</scope>
    </dependency>
    ...
</dependencies>

<build>

빌드할때 사용할 플러그인 목록을 기술

configuration, execution등의 옵션으로 여러 플러그인들의 실행에 관련된 설정을 지정가능

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

p.s

pom.xml을 이렇게 자세하게 뜯어본적은 없는데 알고있는것도 이렇게 글로 정리하면 좀 느낌이 다른듯

profile
거북이는 오늘도 걷는다

0개의 댓글