Marven - Spring 수업노트

 

build management tool for java

프로젝트의 복잡성을 줄일 수 있다.

라이브러리 없이 프로젝트를 진행하는 경우가 없다.

예전 과정

라이브러리 다운

프로젝트에 라이브러리 등록

라이브러리가 변경될 때 / 새로운 프로젝트를 할 때마다 반복

→ 불편함을 해결 하기 위함 : 중앙저장소

maven

/

Maven Project

Group id : 해당 프로젝트를 진행하는 회사에 대한 정보

   일반적으로 회사의 도메인 역순으로 기술 

   [naver.com](<http://naver.com>) → com.naver 

google.comcom.google

ddit.or.kr → kr.or.ddit

Artifact id : Group id에 해당하는 회사에서 진행하는 프로젝트명

     google : Gmail , google drive 

Version : 프로젝트의 버전

  대.중.소 3.5.2

cited from

Maven - Maven in 5 Minutes

The POM

The pom.xml file is the core of a project's configuration in Maven. It is a single coniguration file that contains the majority of information required to build a projects

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/67ac35ad-ae71-4eed-a9e2-a1bd51f46bc0/s.png

for java 9 or more

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a9d76965-6d1d-406e-915f-d9d07b99128c/ee.png

What is Maven? Build and dependency management for Java

Maven consists of three components :

The POM : The file that describes a Maven project and its dependencies.

POM ( project object model) file in its root directory. The pom.xml describes the project's dependencies

The directory : The standardized format for describing a Maven project in the POM

Maven institutes a common project structure and offers a standard file format for descibing how it works. You just plug in your requirements , and Maven calls in dependencies and configures the project for you.

Repositories : Where third-party software is stored and discovered.

centralized repositories : Maven uses centralized repositories to both discover and publish project packages as dependencies. When you reference a dependency in your project, Maven will discover it in the centralized repository, download it to a local repository , and install it into your project.

참고 : Path 변수는 운영체제가 파일의 디렉토리를 파악하는데 사용한다.

Path 변수에 디렉토리를 등록하면 해당 디렉토리에 포함된 파일을 파일 경로 없이 파일 이름만으로도 사용이 가능하다 cmd 창에서 java -version 이 나온다. ??

phase

mvn 명령어를 실행 할 때는 pom.xml 이 존재하는 폴더로 이동해서 실행한다.

mvn clean : 메이븐 빌드과정에서 생성된 결과물(target) 삭제

mvn package : java → class 컴파일 , war 생성( 파일로 묶어주는 것 ( 눈으로 확실히 볼 수 있었다.))

  • artifactid-version.war

네트워크가 → 활성화가 된 상태에서만 동작을 한다.

마븐 저장소는 중앙저장소 로컬저장소가 있다.

Maven repository(central, local)

local repository (user/ .m2) (그룹아이디 , 아키텍처 아이디, )

배포를 할때 script를 만드는데 window환경에서 말고 리눅스나 유닉스로 배포를 한다.

maven lifecycle

lifecycle : ( clean - default - site )

clean lifecycle : 기존 build 작업 내역을 삭제

default lifecycle : 프로젝트 빌드

5개의 페이지 :

compile → 기본설정이 java 1.5

test

package

install : 로컬저장소에 배포를 한다. C:\Users\PC08-PC\.m2\repository

(war 파일이 생성이 된다. ) ( bash 에서 mvn install)

deploy : 로컬저장소를 원격저장소에 배포를 하는 것

( 하위에 있는 것들이 항상 같이 실행된다 ( 글에서는 상위애들..)

site lifecycle : 프로젝트 정보 설명 문서

배포

만들어진 war 파일을 tomcat 의 webapps 폴더에 복사

단 컨택스트 패스 (웹 어플리케이션의 이름)를 고려해서 war 파일의 이름을 적절하게 수정

이클립스에서 내부적으로 이루어지는 작업들 큰틀 - 배포 (컴파일 → 서블릿컨테이너(톰캣)에다 서비스가 될 수 있도록 webapps 에 복사 )

수동으로 하는것 ( deploy.sh) 를 만들기

#1. 6.jspSpring/deploy/jsp 폴더에 github 에서 소스코드를 clone ( 한번만 하면 됨 ) cd jsp #2. 소스 코드를 최신화되도록 github 에서 pull

git pull

#2. marven을 이용하여 war 파일로 생성

mvn package

#3. tomcat 이 기동중이라고 가정하고 shutdown.sh 을 실행 ( 서버 종료 )

/d/B_Util/5.ApacheTomcat/apache-tomcat-8.5.37-windows-x64/apache-tomcat-8.5.37/bin/shutdown.sh

#4 2번 과정에서 생성된 파일(jsp-0.0.1-SNAPSHOT.war)의 이름을 jsp.war로 수정 cd target #이름 수정 mv ./jsp-0.0.1-SNAPSHOT.war ./jsp.war

#5.0 webapps 폴더에 존재하는 jsp 폴더와 jsp.war 파일을 삭제

rm /d/B_Util/5.ApacheTomcat/apache-tomcat-8.5.37-windows-x64/apache-tomcat-8.5.37/webapps/jsp.war #확장자 지우는거 rm -rf /d/B_Util/5.ApacheTomcat/apache-tomcat-8.5.37-windows-x64/apache-tomcat-8.5.37/webapps/jsp

#5. 4번과정에서 만들어진 jsp.war 파일을 tomcat 의 weapps 폴더에 복사 cp ./jsp.war /d/B_Util/5.ApacheTomcat/apache-tomcat-8.5.37-windows-x64/apache-tomcat-8.5.37/webapps

#8. tomcat 을 기동 - startup.sh(서버 시작) /d/B_Util/5.ApacheTomcat/apache-tomcat-8.5.37-windows-x64/apache-tomcat-8.5.37/bin/shutdown.sh

톰캣 실행

vash 에서 명령한다.

mkdir deploy → deploy 만듬

mvn package : war 파일로 만드는 명령어

$ mv ./jsp-0.0.1-SNAPSHOT.war ./jsp.war → 이름 변경

$ rm -rf : 삭제

: 복사

ls -al 는 볼 수 있다.

rwxrwxrwx

drwxr-xr-x

drwxr-xr-x

-는 권한이 없다는것

r은 reading write x 는 실행권한

파일 소유자 / 그룹권한 / 모든 사용자

printwriter 객체 생성 재정의 요청 생성할 때마다 서버의 현재시간이 달라진다. new Date 부분을 db 에서 조회한 데이터라고 생각해보면 사용자 별로 요청에 대한 응답을 각각 다르게 생성하는 것이 가능하다. db 에 대한 연동 부분은 html, javascript 만 이용해서는 불가능 ==> 정적 servlet 을 통해 응답으로 생성하는 html 을 동적으로 변경 => 동적 ( servlet/jsp 를 배우는 이유)

댓글