pom.xml

MIN.DI·2021년 6월 23일
0

강의록

목록 보기
15/54

POM = Project Object Model

프로젝트의 구조와 내용을 설명하고 있으며,
pom.xml 파일에 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성 관리 등의 정보들을 기술.

프로젝트의 세부 메타데이터 정보를 포함한다.
(버전 및 설정 관리, 빌드 환경, 라이브러리 저장소 및 의존성 등등)

<?xml version="1.0" encoding="UTF-8"?>	 <!--모든 xml파일은 선언부가 필요하다.-->

<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/maven-v4_0_0.xsd">	<!--project >> 가장 상위 태그 -->
  
  <modelVersion>4.0.0</modelVersion> 	<!-- 현재 메이븐의 프로젝트 오브젝트 모델의 버전 -->
  
  <groupId>org.bitcamp</groupId>	<!-- 그룹 명-->
  <artifactId>ex00</artifactId>		<!-- 프로젝트 명-->
  <version>0.0.1-SNAPSHOT</version>	<!-- 버전 : 개발자가 정함-->
  
  <packaging>war</packaging>		<!-- 패키징 확장자. war : 웹 아카이브. 자바이면 jar -->
  
  <name>ex00 Maven Webapp</name>	<!-- 현재 프로젝트의 이름-->
  <url>http://maven.apache.org</url>	<!-- 현재 프로젝트에 대한 referene 사이트가 있으면 여기에 기술-->
  <description>Good!</description>	<!-- 프로젝트 description -->
  
<!-- 이 윗부분까지는 거의 바뀌지 않음. -->
<!-- 아래는 크게 세 분류가 있는데, properties / dependencies / build --> 
  
  <properties>				<!-- 속성이 있다면 정의. 속성 내부의 태그명은 개발자가 정함. (사용자 정의 태그)
여기에서 정한 속성명을, 아래에서 사용하겠다는 의미. 변수와 비슷한 의미임-->
     <java-version>11</java-version>	<!-- 사용자 정의 태그. 태그명 = 속성명 / 컨텐츠 = 속성값 -->
     <java-home>${env.JAVA_HOME}</java-home>	<!-- 사용자 정의 태그.
 ${ } : 외부에 있는 값을 가져온다. reference의미?
 env : 환경(environment). 메이븐에서 env는 운영체제에 설정한 환경변수에 접근하는 키워드.
 Build에서 자바 컴파일러의 실제 실행경로를 가져온 것-->
     
    <!-- 프로젝트를 빌드(컴파일, 패키징)할 때, 자바 소스 파일의 인코딩 character set(문자집합)을 maven 이 자동으로 생성 -->
     <project.bulid.sourceEncoding>UTF-8</project.bulid.sourceEncoding>	
  </properties>
  
  
  <dependencies>	<!-- maven의 가장 강력한 기능! 의존성 관리 태그 : 필요한 외부 라이브러리 등록.
				현재 프로젝트를 구현하는데 반드시 필요한 외부 라이브러리 >> "의존성 라이브러리"
				의존성 라이브러리 등록 
				>> 1. maven 원격 저장소에 있는 해당 라이브러리를 자동으로 다운로드하여 지역저장소 폴더에 저장
				   2. 지역저장소에 다운로드한 의존성 라이브러리를 사용 가능하도록 자바의 classpath에 추가!-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
  
  <build>	<!-- Build : LifeCycle 관리하는 것. 이 안에 기술된 대로 lifecycle을 관리하겠다! -->
    
    <finalName>/</finalName> <!--context path를 / 로 지정하면, project update해도 루트로 지정-->
    	
    <plugins>	<!--확장기능. 필요하면 그때그때 추가해서 사용할 수 있다.-->
    
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>		<!--maven이 제공하는 플러그인의 groupID는 모두 동일-->
          <artifactId>maven-compiler-plugin</artifactId>	<!--메이븐 컴파일러 플러그인이 대신 컴파일러를 호출한다. 자바컴파일러 대신!-->
          <version>3.8.1</version>
          
          <configuration>		<!-- 위 플러그인에 대한 설정태그 -->
             <verbose>true</verbose>	<!-- verbose = log를 최대한 자세하게 출력함-->
             <fork>ture</fork>		<!-- 실행중인 프로그램을 프로세스라고 부르는데, fork란 프로세스처럼, 자바 컴퍼일러를 프로세스로 실행시키겠다는 뜻. -->
             
             <meminitial>64m</meminitial>	<!-- maven 컴파일러 구동될 때 사용할 메모리의 최소크기 -->
             <maxmem>128m</maxmem>		<!-- maven 컴파일러 구동될 때 사용할 메모리의 최대크기 -->
             
             <encoding>${project.build.sourceEncoding}</encoding>	<!-- encoding : 평문을 위변조(암호화) 하는 행위. 
컴파일에서는 우리가 만드는 자바 소스파일의 문자(기호)들이 어떠한 문자 집합에 있는 문자들로 구성 되는지? 
maven 컴파일러가 자바 컴파일러 호출해서 컴파일시킬 자바 소스파일이 어떤 문자집합의 문자들로 구성되어있냐?
결국 UTF-8 의 값을 하드코딩해서 넣어도 되는데, 
이미 위에 properties에 선언해놓았기 때문에 ${ } 이용해서 사용하는 것.-->
             
             <source>${java-version}</source>	<!--java 버전 몇으로 작성할건지? properties에서 선언한 태그명을 ${ } 로 참조. 이걸 버전정보로 하드코딩했을 경우, 나중에 버전이 바뀌었을 때 문제 발생-->
             <target>${java-version}</target>
             
             <executable>${java-home}\bin\javac</executable>	<!--컴파일러 실행시, java-home(properties에서 설정한 태그명) \ bin \ javac 라고 하는 명령어 이용-->
             <compilerArgs> 		<!-- 컴파일러 호출할 때, 컴파일러의 행위를 바꾸는 옵션 지정 -->
                <arg>-verbose</arg>
                <arg>-Xlint:all</arg>
                <arg>--release</arg>	<!--자바9 이후 추가된 옵션. 현재 컴파일하는 자바 버전부터, 하위버전까지 호환되는 형식으로 클래스를 만들 수 있다.-->
             </compilerArgs>
             
             <showWarnings>true</showWarnings>		<!--컴파일시 warning이 필요하면 표시해라-->
             <showDeprecation>true</showDeprecation>	<!--작성한 소스코드 중, 자바 버전이 올라가면서 사라진(사라질) 문법(자바 표준 lib가 제공하는 클래스나 메소드 중 없어질 메소드) 으로 작성된 코드가 있으면 표시해라-->
          </configuration>
       </plugin>
    
    </plugins>
    
    
  </build>
  
</project>
profile
내가 보려고 쓰는 블로그

0개의 댓글