Spring/스프링 프로젝트

뉴렉처 메이븐

어굴애 2021. 6. 22. 18:13

IDE : 이클립스, IntelliJ, Visual Studio Code
          개발환경을 총 망라한 개발툴로 편집기, 컴파일러, 탐색기, 편집기, 콘솔, 디버거,빌드툴 등 포함
형상관리(버전관리)툴 : Git, CVS 
테스트툴 : JUnit
빌드툴 : 메이븐, Gradle, Ant


메이븐 설치, 환경설정 후 E드라이브에 maven폴더를 만들었음

메이븐 프로젝트를 생성하기 위해 E드라이브로 이동

e:

cd maven

dir을 통해 디렉터리 안의 내용 확인

 

 

이클립스로 프로젝트를 만들면 이클립스의 템프릿 가지고 만들어짐
메이븐은 내가 자주만드는 형태를 정해놓고 거기서부터 프로젝트가 실행될 수 있도록 함
이런 기본 타입을 archetype이라 하고, 어딘가에 공유할 수 있음.
다른 사람이 이를 모태로 프로젝트로 만들 수 있음.

 

프로젝트 생성 명령어


mvn archetype:generate -DgroupId=com.newlecture-DartifactId=javaprj -DarchetypeArtifactId=maven-archetype-quickstart

1. mvn archetecture type을 만든다

 

2. 프로젝트(ArtifactId)의 이름은 "javaprj"이고, 내 프로젝트를 식별하기 위한 그룹명은 com.newlecture
- 프로젝트명의 중복을 피하기 위해 groupId=com.newlecture로 나만의 도메인주소 사용
- 보통은 newlecture.com이지만 뒤집어서 큰것부터 com.newlecture

 

3."quickstart"라는 다른 사람이 만든 maven-archetype-qiuckstart라는 프로젝트 구조를 기본으로 만들겠다
 - 자바개발에 사용되는 기본 템플릿

artifactId : 프로젝트명

version: 1.0-snapshot 현재 개발 중이면 그냥 enter | 개발완료했다면 1.0 입력

Y : 엔터치면 빌드 성공


pom.xml이 있는 디렉토리에서 컴파일

편집기는 visual studio code 사용했음

- 컴파일 과정에서 오류가 발생하면 pom.xml 설정 들어가서 maven. jdk 버전을 1.8으로 바꾸는 것 추가

 

mvn compile : 컴파일 명령어

mvn package : jar파일 만들어줌 (배포판)

  • Building jar: E:\maven\javaprj\target\javaprj-1.0-SNAPSHOT.jar
  • 속을 들여다보고 싶으면 jar의 확장자 zip으로 바꾸고 들어가볼 수 있음
  • 그 안에 App.class존재
  • jar파일 실행하기  : java -cp target\javaprj-1.0.SNAPSHOT.jar com.newlecture.App
    • cp : target\javaprj-1.0.SNAPSHOT.jar을 class path로 지정
    • E:\maven\javaprj>java -cp target\javaprj-1.0-SNAPSHOT.jar com.newlecture.App 

 


메이븐의 Build LifeCycle과 Phase들

 

하나의 단계 명령어 입력한다면 앞의 단계는 자동으로 실행됨maven package 하면 그 단계까지 자동실행

단계별 실행을 담당하는 플러그인 존재

  • 모든 단계가 다 실행되는 건 아니고, 해당 단계를 실행하는 데 필요한 단계까지만 자동실행
  • 플러그인 : 각 단계를 실행할 때 사용되는 프로그램
  • 몇몇 단계들은 플러그인이 연결되지 않은 상태인데, pom.xml에서 설정가능
  • 즉 교체, 수정이 자유로움
  • Goal : 플러그인의 작은 구성단계들
  • mvn help:describe -Dcmd=compile로 매핑 내용 볼 수 있음
  • maven.apache.org/Maven Plugins에서 다운받아 설정 가능

<phases>
	<phase>validate</phase>
	<phase>initialize</phase>
	<phase>generate-sources</phase>
	<phase>process-sources</phase>
	<phase>generate-resources</phase>
	<phase>process-sources</phase>
	<phase>compile</phase>
	<phase>process-classes</phase>
	<phase>generate-test-sources</phase>
 	<phase>process-test-sources</phase>
 	<phase>generate-test-resources</phase>
	<phase>process-test-resources</phase>
	<phase>test-compile</phase>
 	<phase>process-test-classes</phase>
	<phase>test</phase>
	<phase>prepare-package</phase>
 	<phase>pre-integration-test</phase>
 	<phase>integration-test</phase>
  	<phase>post-integration-test</phase>
	<phase>verify</phase>
	<phase>install</phase> <!--로컬 리파지터리에 만든 artifact옮김 -->
	<phase>deploy</pahse> <!--원격저장소에 놓고 다른 개발자들과 공동 사용 -->
</phases>

 

 

자바개발인지, 웹개발인지에 따라 단계가 좀 다른데 패키징은 pom.xml에서 변경 가능

<packaging>jar</packaging>

  • POM : Project Object Model, 프로젝트를 구성하고 있는 내용을 하나의 모델로 가지고 있음
  • 따라서 pom.xml을 변경하면 프로젝트가 변경됨
  • 자바프로젝트 jar과 웹프로젝트 war을 가장 많이 사용

메이븐 프로젝트 이클립스와 연동하기

 

cmd를 통해 만든 메이븐 프로젝트를 이클립스에서 import해서 사용

 

컴파일 플러그인으로 JDK 버전 변경

maven.apache.org/plugins에서 각각의 플러그인 내용 확인

compiler

  • compile, testCompile 두개의 Goal로 구성
  • goal이 실질적인 역할 담당

pom.xml에서 설정

  • quickstart의 기본 jdk 버전은 1.5인데 1.8로 올려주고 싶을때
  • 방법1 : pom.xml파일에 추가

 

  	<build>
  		<plugins>
  			<plugin>
	  			<artifactId>maven-compiler-plugin</artifactId>
	  			<version>3.8.1</version>
	  			<configuration>
	  				<source>1.8</source>
	  				<target>1.8</target>
	  			</configuration>
  			</plugin>
  		</plugins>
  	</build>

 

  • 방법2: compiler-plugin의 버전이 3.6이상부터는 꼭 플러그인 설정을 오버라이드 하듯이 할 필요없고 좀더 간단하게 설정 가능
    • 플러그인이 가지고 있는 다양한 옵션을 선택하려면 방법1 필요, 그러나 단순히 버전만 수정하고 싶으면 방법2로 충분함

 

	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

 

 

메이븐 프로젝트

mvn archetype:generate

  • 프로젝트 생성 시 모델로 할 수 있는 타입 보기
  • 2000여개의 목록 볼 수 있음
  • 정의하지 않으면 maven-archetype-quickstart [남의 거 쓰지 않고 맨땅에 만들겠다]

 


메이븐 자바프로젝트를 웹프로젝트로 변경하기

pom.xml

  • <packaging>jar</packaging>에서 jar을 war로 변경 (Web Application Archive)
  • 프로젝트 우클릭 - maven - update Maven Proejct
  • src/main/webapp(홈) 등 디렉토리 구조 변경됨
  • web.xml파일이 추가해야 함 : webapp/WEB-INF 폴더추가
    • web.xml파일 톰캣의 web.xml 복붙

 


서블릿/JSP 라이브러리 설정하기

jsp파일 만들면 build Path 해야하는 오류 발생

보통은 Add library해서 server-tomcat추가함그런데 이때, Tomcat 저장경로가 작업 환경마다 다르기 때문에 같은 파일을 import해서 다른 컴퓨터에서 작업하려고 하면그때마다 path를 재설정해줘야하는 번거로움이 있음

 

이를 해결하는 것이 Maven

메이븐의 원격 저장소에 수많은 라이브러리가 존재프로젝트를 개발할 때 단순히 pom.xml파일에 어떤 라이브러리가 필요한지 DI하면 끝남프로젝트마다 개별적으로 라이브러리를 포함할 필요없고, 중복을 피할 수 있음(원격저장소에서 같은 로컬에다 모아놓기 때문에)

 

 

이때의 로컬 저장소 ${user.home}/.m2/repository 사용자계정의 m2폴더/repository폴더필요한 라이브러리 버전을 확인하기 위해 Tomcat-Documentation-tomcat9.0 들어가서 Reference를 참고할 수도 있지만,

 

Maven Repository에서 "tomcat JSP"로 검색해서톰캣 버전에 따른 필요한 라이브러리를 가져올 수 있음

 

 

 


라이브러리 오류 문제

라이브러리 모두 포함 시켰는데도 실행 오류가 나는 경우 존재

Maven Dependencies 목록에서 클릭하면 제대로 다운로드되었다면 그 안의 내용이 열리는 것이 정상

안된다면 파일이 깨진 것

 

이클립스를 일단 모두 끄고

뭐가 깨졌는지 모르기 때문에 .m2/repository안의 모든 파일 삭제

이클립스가 필요한 파일을 자동 다운로드함

 


mvn install : 내가 만든 라이브러리 설치하기

 

jar파일로 만들기 : export - Java -Jar file로 할 수 있지만,

  1. 바로 m2.\repository에 넣고 싶다면 프로젝트 우클릭 - Run as - Maven install
  2. local Repository - rebuild
  3. javaprj/pom.xml에서 add - 검색 후 추가
    • 프로젝트가 포함되어있는 라이브러리를 가져올 경우 폴더 모양의 파일 Dependencies에 추가됨
    • 다른 작업환경에서 사용한다면 다른 라이브러리처럼 병(?)모양으로 뜸
    • import해서 객체생성해 다른 프로젝트의 클래스 등 사용 가능

Central Repository : 다른 사람들과 저장소를 같이 쓰고 싶을 때 deploy해야함, 메이븐 계정 필요