728x90
300x250

[Spring-Framework] 6. Maven, Hibernate 5.4, Servlet, MySQL 8 연동(CRUD) - (1)


Hibernate 5.4 이상에서 ORM기반의 데이터베이스를 사용하는 방법에 대해서 소개하겠다.

글을 작성하게 된 계기는 인터넷을 검색해보니깐, 워낙 오래된 Hibernate 버전을 기준으로 현실성이 없는 복잡한 구현의 글이 많아서 쉽고 간단하게 작성할 수 없겠느냐는 생각을 갖고 좀 더 쉽고 적응하기 쉽도록 만들어보고자 작성하게 되었다.


글을 2부로 구성하였다.


조금 태스트를 하면서 느낀 소감은 iBatis나 SQL이 훨씬 사용하기에는 편리하다.

절차지향적인 언어인 SQL 사용하는 게 나쁜 건만 아니라고 본다.


조금 양이 많을 수 밖에 없어서 불가피하게 두 개의 글로 나누었으니 참고하길 바란다.


Hibernate(하이버네이트)란?

하이버네이트 ORM은 자바 언어를 위한 객체 관계 매핑 프레임워크이다.
객체 지향 도메인 모델을 관계형 데이터베이스로 매핑하기 위한 프레임워크를 제공한다.
하이버네이트는 GNU LGPL 2.1로 배포되는 자유 소프트웨어이다.

https://hibernate.org/



ORM(Object-relational mapping)이란?

ORM(Object-relational mapping)을 단순하게 표현하면 객체와 관계와의 설정이라 할 수 있다.
ORM에서 말하는 객체(Object)의 의미는 우리가 흔히 알고 있는 OOP(Object_Oriented Programming)의 그 객체를 의미한다는 것을 쉽게 유추할 수 있을 것이다. 그렇다면 과연 관계라는 것이 의미하는 것은 무엇일까?
지극히 기초적인 이야기지만 개발자가 흔히 사용하고 있는 관계형 데이터베이스를 의미한다.



[환경]

- 운영체제: Microsoft Windows 10


- 웹서버: Apache-tomcat-9.0.37                (http://tomcat.apache.org/)


- IDE: Spring Tool-Suite 4-4.7.2 Releases      (https://spring.io/tools)

  * JBoss -> Hibernate만 설치할 것(필수) - Help->Eclipse Marketplace


- 데이터베이스: MySQL 8.0.21 Windows 64bit  (https://dev.mysql.com/downloads/mysql/)

  * Library: Connector/J 8.0.21


- 개발 라이브러리:

  * Maven

    - https://maven.apache.org/

  * hibernate-entitymanager (5.4.21 Final)

    - https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager

    - https://hibernate.org/

  * javax.inject (1)
  * javax.servlet-api (4.0.1)

    - https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api

  * mysql-connector-java (8.0.21)

    - https://mvnrepository.com/artifact/mysql/mysql-connector-java




1. MySQL Server - 설치하기


아래의 사이트에 접속한다.

https://dev.mysql.com/downloads/mysql/


설치 방법은 워낙 간단하고, 잡음이 적은 프로그램이므로 짧게 정리하였다.




그림 1) MySQL Server 8.0.21 - 설치하기





그림 2) MySQL Server 8.0.21 - 설치하기



2. 테이블 설계 (emptable, student)


dto 또는 model 영역 중 하나의 작업으로 두 개의 테이블을 설계하였다.


"emptable", "student"




그림 3) 데이터베이스 테이블 생성 - emptable






그림 4) 데이터베이스 테이블 생성 - student



CREATE TABLE `emptable` (

  `empno` INT NOT NULL AUTO_INCREMENT,

  `name` VARCHAR(20) NULL,

  `address` VARCHAR(100) NULL,

  `createdate` DATE NULL,

  PRIMARY KEY (`empno`));


INSERT INTO `emptable` (`name`, `address`, `createdate`) VALUES ('하하', '안녕', '20-09-1');



CREATE TABLE `student` (

  `studentno` INT NOT NULL AUTO_INCREMENT,

  `name` VARCHAR(45) NULL,

  `address` VARCHAR(100) NULL,

  `createdate` DATE NULL,

  PRIMARY KEY (`studentno`))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8

COLLATE = utf8_unicode_ci;


INSERT INTO `student` (`name`, `address`, `createdate`) VALUES ('홍길동', '연습', '21-3-4');


[첨부(Attachments)]

emptable.zip

student.zip




3. 프로젝트 구성


미리 살펴보는 hibernateMaven2 프로젝트의 구성이다.



그림 5) 프로젝트 구성도 - hibernateMaven2


* Servlet 구성

- /SampleServlet

- /StudentServlet



4. POM.xml 수정하기(Maven 적용된 프로젝트)


pom.xml이 왜 없냐고 생각하는 경우가 있을 수 있다.

알기 쉽게 소개하면, maven이 적용되어있는 프로젝트에서 존재하는 기능이라고 보면 된다.


http://mvnrepository.com에 접속해서 몇 가지 구성을 찾아서 입력해줘야 한다.


(중략)

      <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->

<dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-entitymanager</artifactId>

    <version>5.4.21.Final</version>

</dependency>

    <!-- @Inject -->

    <dependency>

        <groupId>javax.inject</groupId>

        <artifactId>javax.inject</artifactId>

        <version>1</version>

    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>javax.servlet-api</artifactId>

    <version>4.0.1</version>

    <scope>provided</scope>

</dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>8.0.21</version>

</dependency>


(중략)




그림 6) pom.xml 수정하기







5. hibernate 환경설정 - 생성과 수정


이 작업은 "JBoss -> hibernate" 라이브러리를 설치하지 않으면, 의미가 없다고 보면 된다.

수동으로 물론 셋팅할 수는 있으나 권장하진 않는다. (시도해봐도 무방, 처음에 찾는데 시간이 오래 걸린다. 이런 문제)




그림 7) 프로젝트 항목 -> 오른쪽 버튼 메뉴 모습





그림 8) Hibernate Configuration File 선택하기


- Hibernate XML Mapping file 기능은 생성이 되지 않는다.

  (꼭 반드시 XML Mapping으로 hibernate resources를 잡을 필요는 없으며, Class Mapping도 사용된다.)


셋팅에서 필요한 부분들을 정리해보았다.


* hibernate.connection.driver_class = com.mysql.jdbc.Driver

* hibernate.connection.url = jdbc:mysql://localhost:3306/web?serverTimezone=UTC&characterEncoding=utf8

* hibernate.dialect = org.hibernate.dialect.MySQL8Dialect

* hibernate.show_sql = true

* hibernate.hbm2ddl.auto = update

* hibernate.default_entity_mode = pojo

* hibernate.current_session_context_class = thread



문제1. [MySQL 초기 설치 후 작업했을 때, 타임존 문제]


타임존 미설정시

* ERROR: The server time zone value


해결 방법1: serverTime=UTC를 입력해준다.

해결 방법2: 서버 my.cnf 파일에서 timezone을 지정해준다.


* my.cnf 파일 내에 환경 설정을 변경해주는 방법이 있다.
[mysqld]

default-time-zone='+9:00'



문제2. [UTF-8 환경설정 문제]


해결 방법1: characterEncoding=utf8을 입력해준다.

해결 방법2: 서버 my.cnf 파일에서 timezone을 지정해준다.


* my.cnf 파일 내에 환경 설정을 변경해주는 방법이 있다.

[mysqld]

init_connect = SET collation_connection = utf8_general_ci

init_connect = SET NAMES utf8

character-set-server = utf8

collation-server = utf8_general_ci




그림 9) hibernate.cfg.xml


[첨부(Attachments)]

hibernate.cfg.zip


* 경로는 다음과 같다. 참고로 초기에 폴더가 생성되어 있는 것이 아니라서, 수동으로 폴더를 만들어줘야 한다.


폴더: src/main/resources




그림 10) hibernate 모습



물론 공식 메뉴얼만 가지고 이해가 되지 않으면 추가적인 검색을 시도해봐도 된다.





5. 결과 - 미리 살펴보는 결과


완성된 작품은 이러한 모습을 가지고 있다.

무슨 작품을 만들지 생각해보기 위함이다.


그림 11) 출력 결과 - 웹 브라우저




그림 12) 출력 결과 - 웹 브라우저(2)




그림 13) 출력 결과 - 웹 브라우저(3)




6. 2부에서 만나요 


게시글 2부에서 연속 글이 연재된다.


[Spring-Framework] 7. Maven, Hibernate 5.4, Servlet, MySQL 8 연동(CRUD) - (2)

https://yyman.tistory.com/1405




* 참고 자료(References)


1. Hibernate Getting Started Guide, https://docs.jboss.org/hibernate/orm/5.4/quickstart/html_single/, Accessed by 2020-09-21, Last Modified 2020-08-27 10:35.

- 공식적인 Hibernate 메뉴얼이니 이해가 안 되면 읽어보길 바란다.


2. Hibernate 5 Java Configuration Example - DZone Java, https://dzone.com/articles/hibernate-5-java-configuration-example, Accessed by 2020-09-21, Last Modified 2018-12-03

- 추천(70점): 가장 실질적으로 많은 도움을 받았던 글이다. (영어 글)


3. MySQL(MariaDB) 서버 타임존 설정하기, https://offbyone.tistory.com/318, Accessed by 2020-09-21, Last Modified 2018-07-17 23:38.

4. java.sql.SQLException: The server time zone value ‘xx time’ is unrecognized, https://mkyong.com/jdbc/java-sql-sqlexception-the-server-time-zone-value-xx-time-is-unrecognized/, Accessed by 2020-09-21, Last Modified 2019-07-05.

- 비고: (영어 글)이다.

반응형
728x90
300x250

[이야기] Maven, Oracle 19, Hibernate 5.4 - ORM 구현 및 동작하나요?


인터넷 글 등을 참고해보면, 대다수 검색되는 내용이 "Spring + Maven + Hibernate + MySQL" 조합의 글들이 굉장히 많이 나온다.

해외 사이트를 찾아서 참고해보면, "Maven + Hibernate + MySQL" 조합도 종종 나온다.

StackOverflow에 Oracle 19g와 Hibernate를 사용할 때 Dialect을 어떤 것을 사용해야 하는지 검색을 해보았다.

Oracle 12버전으로 하면 된다고 해서 시도하였으나 동작하지 않았다.



* 오라클로 작업을 하고자 하는 인원이 있다면, 참고하면 좋겠다.


* 결론: 수 차례 실험 결과로는 동작하지 않는다. (2020-09-20일 기준)



- 오라클 데이터베이스 자체가 전혀 안 된다는 이야기는 아니고, Dialect 등이 엄격하게 버전을 인식하는 것으로 추측해본다.
  (실험을 해보면 Oracle 11, Oracle 12로 시도했을 때는 될 수도 있다는 이야기를 하고 싶었다.)
- 물론 시간적인 여력이 된다면, 연재해보겠다. 

  (오라클 제거하고, 컴퓨터 포멧이나 VirtualBox 등 각종 방법으로 실험을 한다고 했을 때 시간이 소요되는 작업이다. 결코 쉽지않은 작업들이다.)




1. 작업화면


수 차례 실험하였으나 동작하지 않는다.



그림 1. hibernate Maven 프로젝트




2. 실험 환경


* 컴퓨터 사양: intel i5 4세대 이상, SSD 256GB 이상, RAM 16GB 이상

* 시도 횟수: 4번(hibernate 초기 로드시간이 상당히 오래 걸림.) - 코드 작성 / 재작업 등 각종 숨은 디버깅 작업이 있었음.

              데이터베이스 테이블도 구현하였고 각종 작업을 하였음.


* IDE: Spring-tool-suite-4-4.7.2 Release(Eclipse)

     Jboss - hibernate만 설치


* POM:

      java-servlet

      hibernate-em(entity-manager)

      oracle-19g(ojdbc8)


* Database: 

      Oracle Databases 19g


* Web Server:

      Apache Tomcat 9


* 환경설정 파일 생성: Jboss - hibernate로 자동 생성하였음. (src/main/resources 폴더 내에 hibernate.cfg.xml 설치함)


* 프로젝트


   - [첨부(Attachments)]

hibernateMaven.zip


특이한 점: 초기 웹서버를 리셋하고, URL주소를 입력하여 DB에 접근하면 무한 반응으로 대기상태에 한참 있다가 hibernate 동작에서 

한참 대기 후에 결과가 나옴.


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

                                         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

 <session-factory name="">

  <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

  <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>

  <property name="hibernate.connection.username">사용자계정</property>

  <property name="hibernate.connection.password">비밀번호</property>

  <property name="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</property>

  <property name="hibernate.show_sql">true</property>

  <property name="hibernate.use_sql_comments">true</property>

  <property name="hibernate.format_sql">true</property>

  <mapping class="com.hibernateMaven.web.model.EmpTable"/>

 </session-factory>

</hibernate-configuration>


* 파일명: hibernate.cfg.xml

* 비고: Dialect이 지원될 때까지는 기다려야 할 것으로 보인다. 이전 Dialect으로 연결 시도를 해도 된다는 Stackoverflow 글도 참고하였으나 확인되진 않았다.

        (2020-09-21)



그림 2. JBoss Tools 4.16.0. Final



그림 3. Maven Project 생성 모습의 예



그림 4. 프로젝트 오른쪽 버튼 -> New -> Other....



그림 5. Hibernate 환경설정 파일 - 마법사 (JBoss 기반)



그림 6. Hibernate 환경설정 파일 - 마법사 (JBoss 기반)




그림 7. Hibernate 환경설정 파일 - 마법사 (JBoss 기반)



그림 8. Hibernate 환경설정 파일 생성된 모습


JBoss - Hibernate 플러그인을 설치하면, GUI화면으로도 작업할 수 있다.



그림 9. Hibernate 환경설정(GUI)으로 Mapping 시도하는 모습


실험하면서 동작하였으면, 좋은 글 하나 나왔을 탠데 아쉽다는 조금 생각이 든다.


현재 시중 블로그에 제대로 동작하는 Hibernate + Maven + Oracle 18 이상의 프로젝트는 없다고 보면 정확할 거 같다.

OpenTutorial 이런 강의 사이트 동영상도 참고해보기도 하고, 많은 시간을 투자하였다.





3. 결론(Conclusion)


안 될 때는 과감하게 정리해야 한다. 시도해볼만한 삽질이라면, 해야 하는게 맞지만, 오래 시도하기에는 애매한 작업들이 있다.


Hibernate보다는 MyBatis가 좋다고 보는게, 직관적으로 SQL 문법을 자유롭게 사용할 수 있다는 게 큰 장점이라고 본다.

ORM(객체-관계-맵핑)이라는 주제도 물론 중요하지만, 그거 필요하면 코드로 그냥 구현해서 사용하는 게 더 이득이고 낫다고 주장해본다.


엔터프라이즈 환경에 적합하다고 적은 교과서도 시중에 있긴 있는데, 꼭 그렇진 않은 거 같다고 본다.

서버 튜닝으로 막아도 무방하고, MySQL 이런 것도 예를 들면 튜닝이나 Cluster 등 다양한 방법론을 잘 적용하면 엔터프라이즈에서도 사용할 수 있다고 본다.


SQL 문법이 크게 어려운 것이 아니니깐, ORM은 여전히 시기상조라고 주장해본다.

더 복잡해지고 개발환경이나 생산성에서 미흡한 점이 여전히 남아 있다.

반응형
728x90
300x250

[Spring-Framework] 4. Eclipse와 Maven MVC 웹 프로젝트 - 생성하기


이번에 소개할 글은 Apache Maven 프로젝트(이하 "메이븐" 또는 "Maven")을 활용하여 Maven 기반의 MVC 프로젝트를 생성하도록 하겠다.

Spring-Framework를 이해하기 전에 경험해보면 도움이 될 것이라고 생각한다.


적용 대상: Eclipse 최신 버전(또는 Spring Tool Suite-4 이상)




1. 프로젝트 생성하기


프로젝트 생성부터 간단하면서도 알기 쉽게 작성하였다.



그림 1. Project 생성하기


File에서 New->Project...을 클릭한다.




그림 2. Project 생성하기


Use Default Workspace location을 체크한 후 Next를 누른다.



그림 3. Project 생성하기


org.apache.maven.archietypes    |   maven-archietype-webapp   |   1.4


해당 카탈로그를 선택한 후 Next를 누른다.



그림 4. Project 생성하기


아래 그림 3처럼 여러가지 값을 적는 창이 나타난다.

Group Id는 프로젝트를 진행하는 회사나 팀의 도메인 이름을 거꾸로 적는다.

Artifact Id는 해당 프로젝트의 이름을 적는다.

package는 위 두가지가 조합된 이름으로 나온다.


작성을 완료하였으면, Finish를 누른다.



그림 5. Project 생성하기


프로젝트 생성이 된 것을 확인할 수 있다.

Problems 창에 보면, Servlet 오류가 있는 것을 확인할 수 있다.

정상적으로 프로젝트가 생성된 것이다.



2. Maven 프로젝트에서의 Servlet-api.jar 파일에 대한 것(pom.xml 이해)


maven을 사용하면, 귀찮게 servlet-api.jar 파일을 따로 복사, 붙여넣기를 할 필요가 없다.



그림 6. 이전 스타일 - Maven 프로젝트를 사용하지 않은 경우


Apache Maven 프로젝트는 POM.xml 기반으로 동작한다.

따로 servlet-api.jar를 이전의 "WebContents\Web-inf\lib에 복사, 붙여넣기"를 안 해도 된다.




3. Maven 프로젝트에서의 Servlet-api.jar 파일에 대한 것(pom.xml 구현)


pom.xml 파일을 편집하여 servlet-api.jar를 자동으로 생성하는 방법에 대해서 소개하겠다.



그림 7. pom.xml - eclipse


pom.xml을 더블클릭한다.


<dependencies>~</dependencies> 내에는 <dependency>가 정의되어 있는 것을 살펴볼 수 있다.
(글로만 보면, 조금 어려우니 그림을 가지고 소개함.)


    <dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

<scope>provided</scope>

</dependency>


</dependency> 뒤에 위의 내용을 입력해준다.



그림 8. pom.xml - eclipse


pom.xml에 명령어를 입력함으로서 잠시 기다리면, javax-servlet-api-3.1.0.jar 파일이 자동으로 생성되는 것을 확인할 수 있다.

그리고 Problems 내에 발생했던 javax.servlet Error도 함께 사라지는 것을 확인할 수 있다.


참고: SSD 이상의 빠른 저장매체로 작업한다면, 빠르게 변화하는 모습을 확인할 수 있음.





4. Maven 프로젝트 - Hello World 실행하기


Maven 프로젝트를 Apache Tomcat 9으로 실행하도록 하겠다.



그림 9. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


"Run As..."를 누른다.




그림 10. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Run on Server를 선택한 후 OK를 누른다.



그림 11. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Tomcat 서버 셋팅을 한 후 Finish를 누른다.


비고: 이미 환경 셋팅이 된 모습이다. Tomcat v9.0 Server at localhost가 안 보인다면 환경설정을 따로 해야 한다.




그림 12. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Finish를 누른다.



그림 13. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Maven 기반으로 완성된 홈페이지를 살펴볼 수 있다.




5. Maven Project의 pom.xml 설정이 만능인가?


앞서 servlet-api.jar에 대해서 간단한 설정으로 자동생성이 된다고 소개하였다.

pom.xml 설정으로 모든 것을 다 처리할 수 있을 정도인지 언급해보려고 한다.


결론은 아니다.



그림 14. pom.xml 설정에서의 오류


pom.xml 설정을 하였는데, 운이 안 좋으면 jar파일을 못 찾을 수도 있다.

물론 36줄~40줄의 내용이 완벽한 것은 절대 아니다.


이 부분에 대해서는 추가적으로 소개하겠다.




6. Maven Project의 pom.xml 설정에 대한 정보찾기 


그림 14에서의 잘못된 pom.xml 설정의 문제에 대해서 잠깐 소개하였다.

구체적으로 Maven Project에서 지원하는 Repository가 무엇인지, 버전은 어떻게 되는지 각종 정보에 대해서 알 수 있는 사이트를 소개하겠다.


https://mvnrepository.com/


이 사이트를 모르면, 초기에 환경설정 작업을 하는 데 많이 힘들 것으로 보인다.



그림 15. mvnpepository.com (2020-09-19)


그림 15 사이트에 접속해서 검색해서 사용하고자 하는 버전, pom에서 지원하는지 등을 쉽게 살펴볼 수 있다.



그림 16. mvnrepository.com의 mysql 검색 결과 (2020-09-19)


MySQL Connector/J를 클릭한다.



그림 17. mvnrepository.com의 mysql 세부 결과 (2020-09-19)


세부적으로 지원하는 버전에 대해서 소개하고 있다.



그림 18. 버전을 클릭하여 pom에서 사용하는 코드 생성


Maven에 적용할 수 있는 코드가 출력되는 것을 확인할 수 있다.

그림 14의 오류 문제가 해결되는지 한번 적용해보겠다.



그림 19. 이상없이 적용된 mysql-connecotr-java-8.xx버전 - Maven MVC


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>8.0.21</version>

</dependency>


정상적으로 동작하는 모습을 살펴볼 수 있다.



비고: MyBatis부터 다양한 Library를 예를 들면, 간단한 명령어로 연결시킬 수가 있음.




7. 결론(Conclusion)


pom.xml을 제대로 적용해주면, 많은 문제를 쉽고 간단하게 해결할 수 있다고 본다.

Maven MVC 웹 프로젝트 입문에 대해서 소개하였다.


JSP/Servlet을 경험한 사용자들을 위한 글을 한번 추가로 연재해보겠다.



* 참고 자료(References)


1. Maven Repository: mysql » mysql-connector-java » 8.0.21, https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.21, Accessed by 2020-09-20, Last Modified 2020-07-12.

2. Spring MVC Example for User Registration and Login - DZone Web Dev, https://dzone.com/articles/spring-mvc-example-for-user-registration-and-login-1, Accessed by 2020-09-20, Last Modified 2017-03-05.

3. Maven Repository: Search/Browse/Explore, https://mvnrepository.com/ , Accessed by 2020-09-20, Last Modified 2020-09-20.

반응형
728x90
300x250

[Spring-Framework] 3. Eclipse와 Apache Maven 프로젝트 - 구축하기(1)


Spring-Framework의 배경이 되는 Maven(이하 "Apache Maven") 프로젝트에 대해서 소개하려고 한다.


비고: 최신 Eclipse 개발도구에는 Maven Project가 내장되어 있음.


수동으로 콘솔 환경 등의 명령어로 Maven 개발환경을 구축하는 방법부터 시작해서 Eclipse 내장기능으로 사용하는 방법에 대해서 소개하겠다.



[Maven 개발방법]

1. 콘솔 등으로 수작업 개발 및 코딩
   (1, 2항목을 잘 읽어보면 도움이 될 것으로 보인다.)

2. Eclipse IDE 등을 활용한 Maven 개발환경 구축





1. Apache Maven Project


Apache Maven Project 사이트에 들어가면, Maven 프로젝트에 대해서 소개 및 자세한 내용을 살펴볼 수가 있다.


아파치 메이븐?

Apache Maven은 소프트웨어 프로젝트 관리 및 이해 도구이다.
프로젝트 개체 모델 (POM)의 개념을 기반으로 Maven은 중앙 정보에서 프로젝트의 빌드,보고 및 문서를 관리 할 수 있다.


URL: https://maven.apache.org/



그림 1. Apache Maven Project



그림 2. Apache Maven - Download


그림 2의 사이트에서 apache-maven-3.6.3.bin.zip을 내려받아서 수동으로 설치할 수 있다.





2. Maven 개발환경 - 설치하기


내려받은 apache-maven-3.6.3-bin을 압축푼다.



그림 3. apache-maven-3.6.3-bin 압축 풀기


apache-maven-3.6.3-bin.zip을 압축 푼다.

그러면, 폴더 하나가 생성되는 것을 확인할 수 있다.



그림 4. apache-maven-3.6.3


경로를 메모해둔다.

-> D:\apache-maven-3.6.3-bin\apache-maven-3.6.3





3. Maven 개발환경 - 시스템 환경설정


방금 전에 압축 푼 폴더를 바탕으로 Maven 개발환경을 셋팅할 것이다.



그림 5. apache-maven-3.6.3 - 시스템 환경 변수(N)


"시스템 -> 오른쪽 버튼 -> 속성"을 누른다.

"고급 시스템 설정 -> 고급 탭 -> 환경 변수(N)"을 클릭한다.



그림 6. apache-maven-3.6.3 - 시스템 환경 변수(N)


시스템 변수(S)에서 "Path" 변수를 찾아서 클릭한다.

"편집(I)"을 누른다.




그림 7. apache-maven-3.6.3 - 시스템 환경 변수(N)


맨 아래 항목에 아까 메모해둔 경로를 입력해준다. ("복사", "붙여넣기"를 권장함.)



4. Maven 개발환경 - 명령 프롬프트로 구축환경 확인하기


앞에 단계를 잘 했다면, 확인해야 할 것이다.

아래의 과정을 잘 따라하도록 하자.



그림 8. 명령 프롬프트 - 관리자 권한으로 실행하기


시작 메뉴에 cmd라고 입력 후 "관리자 권한으로 실행"을 클릭한다.



그림 9. 명령 프롬프트 - 관리자 권한으로 실행하기


mvn -version


이라고 명령어를 입력하면, 그림 9의 출력화면을 볼 수 있다.



5. Maven - Repository 경로 변경


기본 Maven Repository는 ${user.home}/.m2/repository 라는 폴더에서 관리한다.
dev 폴더에서 관리하도록 저장소를 로컬로 바꿀것이다.
dev 폴더에서 관리하길 원하지 않는다면, 이 단계는 넘어가도 된다.


[경로 변경 방법]

1. D:\.........중략......\apache-maven-3.6.2 에서 repository 폴더를 생성한다.

2. D:\.........중략......\apache-maven-3.6.2\conf 에서 settings.xml 파일을 연다. 

3. setting.xml 파일에서 <localRepository> 주석 처리된 부분을 찾은 뒤, 그 위에다 로컬 저장소를 등록한다.



그림 10. 폴더 만들기


임의의 폴더명 "repository"라는 폴더를 만들어본다.



그림 11. 환경설정 변경하기(1) - 변경 전


약 53줄에 있는 <localRepository>~</localRepository>를 복사해서 (빈 줄) 55줄 정도에 붙여넣는다.

[주석이 없는 빈줄에 넣어주기]



그림 12. 환경설정 변경하기(1) - 변경 후


입력을 완료하였다면, 저장을 누른다.





6. 응용 - Eclipse 프로젝트에 수동 설치한 Apache Maven 적용하기


최근 eclipse는 기본적으로 Apache Maven을 내장하고 있다.

하지만, 굳이 수동으로 설치한 Maven을 사용하고 싶다면, 다음처럼 사용할 수도 있다.



그림 13. Preferences 설정하기


"Window->Preferences"를 클릭한다.



그림 14. Preferences 셋팅하기


Maven 탭에서 Installations을 클릭한다.

그리고 "Add..." 버튼을 클릭한다.




그림 15. Preferences 셋팅하기


Directory 버튼을 누른다.



그림 16. Preferences 셋팅하기


apache-maven-3.6.3의 설치 경로를 선택한 후 "폴더 선택"을 누른다.




그림 17. Preferences 셋팅하기


설정을 확인한 후 "Finish"를 누른다.



그림 18. Preferences 셋팅하기


"apache-maven-3.6.3"을 체크한다.

그리고 "Apply"를 누르면 적용이 완료된다.



그림 19. Preferences 셋팅하기


사용자 환경설정에 관한 것이다.

Maven 탭에서 User Settings를 클릭한다.


[기본값]

User Settings: C:\Users\사용자계정명\.m2\settings.xml

Local Repository: C:\Users\사용자계정명\.m2\repository




그림 20. Preferences 셋팅하기


앞서 환경설정을 변경한 경로를 찾아서 선택한 후 "settings"를 열기한다.

(비고: Apache-maven-3.6.3\conf폴더 내에 settings.xml 파일이 존재함)



그림 21. Preferences 셋팅하기


그림 21처럼 변경한 후 "Apply"를 누르면 적용이 완료된다.



7. 맺음글(Conclusion)


Apache Maven 프로젝트를 설치하는 방법과 개발 환경 구축이라는 주제를 소개하였다.



* 참고 자료(Reference)


1. Maven - Welcome to Apache Maven, https://maven.apache.org/, Accessed by 2020-09-19, Last Modified 2020-09-10

반응형

+ Recent posts