1. 메이븐(Maven) = 빌드툴 (Build Tool)
: Java 프로젝트를 만들때 가장 사용하는 빌드툴,
복잡한 빌드를 다루기 쉽게 만든 툴이다.
2. 프로젝트 빌드 과정
: 프로젝트 생성 > 라이브러리 설정 > 코드 작업 > 컴파일 > 테스트 > 패키지 > 배포 > 레포팅(문서)
** 개발과정에서는 이 과정이 자주 반복되기 때문에
이를 효율적으로 개발할 수 있도록 도와주는 것이 빌드도구(빌드툴)이다.
** 이때 주의할 점, 이클립스는 빌드툴이 아닌 IDE이다.
[IDE, Integrated Development Envirionment] 통합 개발 환경
3. 이클립스가 제공하지 않는 메이븐(Maven) 만의 기능
** 프로젝트 생성 : 사용자 정의 프로젝트
** 라이브러리 설정 : 라이브러리 관리 의존성 체크
** 배포 : 라이브러리 저장소 활용
4. 메이븐 설치
: https://maven.apache.org > Download > Binary zip archive 다운
> 다운받은 압축 해제 > 폴더 생성 후 붙여넣기
> 환경변수 설정
> M2_HOME 새로 만들기, 변수 값은 maven 폴더가 있는 주소로 설정
> Path 추가
> 아래의 명령어를 이용, 정상적으로 다운받아졌는지 확인하기
mvn -version
[주의] java_home environment variable is not defined correctly maven 에러가 발생할 수 있다.
해당 에러는 JAVA_HOME의 경로를 다시 설정해주면 해결된다.
[추가] 메이븐 도움말 보기 명령어
mvn -h
5. 메이븐으로 자바 프로젝트 생성
1) 프로젝트 폴더 생성 > cmd창 위치를 생성한 폴더로 이동
(md 디렉토리 생성, cd 디렉토리 이동)
2) archetype:generate(archetype : 프로젝트의 구조, artifact : 만들어 놓은 프로젝트 구조물)
: 다른 사람이 만든 maven-archetype-quickstart라는 프로젝트 구조를 기본으로 프로젝트 생성
[이클립스] 이클립스에서 준비된 프로젝트 템플릿을 사용하여 기본 세팅만 되어 있는 빈 프로젝트를 만들었다.
[메이븐] 내가 자주 사용하는 프로젝트 템플릿이 있으면 그 구성을 등록(저장)해놓고
언제든지 불러와서 프로젝트를 시작할 수 있다.
mvn archetype:generate -DgroupId=com.mvn.java -DartifactId=JavaPrj -DarchetypeArtifactId=maven-archetype-quickstart
** groupId=com.mvn.java
: 경우에 따라선 프로젝트 명이 동일 할 수도 있다.
이때! 충돌나지 않게 식별하려면 groupId를 지정한다.
일반적으로 groupId는 패키지명과 비슷한 네이밍을 가진다.
** artifactId=JavaPrj
: JavaPrj이라는 이름의 프로젝트 생성,
arrifactId로 설정하면 내가 만든 프로젝트를 기반으로 누군가 이를 템플릿 삼아 프로젝트 생성 가능
(다른 사람이 쓸수 있게끔 배포 가능)
6. 생성된 프로젝트 폴더 확인(총 3개)
1) work_maven > javaPrj > pomxml
2) work_maven > javaPrj > src > main > java > com > mvn > java > App.java
3) work_maven > javaPrj > src > test > java > com > mvn > java > AppTest.java
7. 컴파일 및 실행
1) VisualStudioCode에서 편집
package com.mvn.java;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "안녕하세요 Maven!" );
}
}
2) 컴파일
: 프로젝트 루트 폴더(pom.xml과 src 폴더가 보이는 폴더)로 이동, 컴파일 명령어 입력
mvn compile
** 컴파일이 성공하면 프로젝트 폴더 안에 target 폴더와 App.class 파일이 생성된다.
3) 패키지 만들기
: 패키징을 하면 jar 파일이 만들어진다
mvn package
** 패키지가 정상적으로 만들어지면 work_maven > javaPrj > target에 jar 파일을 확인 할 수 있다.
4) .class 파일, .jar 파일로 실행 가능
5) 글자가 깨진 이유는 작성한 파일은 UTF-8인데 encoding MS949이기 때문임, pom.xml에서 인코딩 변경해주면 됨
인코딩 변경하면서 java 버전도 1.8로 변경했다.
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mvn.java</groupId>
<artifactId>JavaPrj</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>JavaPrj</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--
<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>
-->
</project>
6) pom.xml을 수정하면 반드시 update가 필요함(clean : target 폴더 삭제, -U : dependency 업데이트)
mvn clean compile -U
mvn package
mvn compile
7) 정상적으로 출력됨
8. BuildLifeCycle은 Phase(단계)로 구성
: mvn 명령에 다음에 오는 compile, test, package는 수행 단계(phase)를 말한다.
9. default Lifecycle
<phases>
<phase>validate</phase>
<phase>initialize</phase>
<phase>generate-sources</phase>
<phase>process-sources</phase>
<phase>generate-resources</phase>
<phase>process-resources</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>package</phase>
<phase>pre-integration-test</phase>
<phase>integration-test</phase>
<phase>post-integration-test</phase>
<phase>verify</phase>
<phase>install</phase>
<phase>deploy</phase>
</phases>
10. phase는 <packaging>에 따라 조금씩 다르다.
11. phase 별로 구성된 plugin,
plugin에는 plugin을 구성하고 있는 작은 프로그램 구성들이 있다. 이를 plugin의 Goal이라 한다.
12. 최신 버전의 이클립스는 메이븐 플러그인 기본으로 내장되어 있다.
13. 만든 Maven 프로젝트 이클립스로 import 하기
: 우클릭 > Import... 클릭
> Maven > Exisiting Maven Projects > Next 클릭
> import하고자 하는 프로젝트 폴더 선택 > projects에 pom.xml이 뜸, 체크박스 활성화 > 체크박스 체크 후 Finish 클릭
> import 완..!!
[중요] 이클립스에서 작업하지만 메이븐 프로젝트이다. 그렇기 때문에 이클립스에 의존적이지 않는다.
나중에 작업하고 프로젝트만 따로 떼어서 이클립스 아닌 다른데 옮겨도 그 곳에서도 정상 실행된다.
14. 웹 프로젝트
1) html
** pom.xml의 jar > war로 변경하는 것만으로도 메이븐에서는 알아서 웹 프로젝트로 만들어 준다.
** src > main > webapp에 WEB-INF 폴더 web.xml 파일을 만들면 html 실행 가능
2) JSP
** BuildPath 설정을 통해 Apache Tomcat 라이브러리 사용 가능,
그러나 반드시 설정된 경로에 라이브러리가 있어야 한다.
하지만 메이븐을 이용하면 동일한 경로 세팅에서 자유로울 수 있다!
** 메이븐 설정파일 pom.xml에 Apache Tomcat 라이브러리 추가
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mvn.java</groupId>
<artifactId>JavaPrj</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>JavaPrj</name>
<url>http://maven.apache.org</url>
<!-- 프로젝트에 필요한 라이브러리는 dependencies에 기술하면 메이븐이 알아서 다운로드 해줌 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- JSP를 사용하기 위한 라이브러리 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>9.0.35</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--
<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>
-->
</project>
[추가] https://mvnrepository.com를 이용하여 추가하기
[추가] 정상적으로 다운받아지면 아래와 같이 확인됨, 연관있거나 필요한 라이브러리는 알아서 다운 받아줌
[추가] 만약 다운이 되지 않았다면 아래의 내용을 이용하여 추가 다운 받기
** 정상적으로 실행된 모습..!!
15. mylib
** Maven 프로젝트 생성
: 우클릭 > New > Maven Project 클릭
> Create a simple project 선택 후 Next 클릭 > Group Id, Artifact Id 설정 후 Finish 클릭
** pom.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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mylib</groupId>
<artifactId>mylib</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>
** [src/main/java] com. mylib.entity > Exam.java
package com.mylib.entity;
public class Exam {
int kor;
int eng;
int math;
// 기본 생성자, 매개변수 생성자
public Exam() {}
public Exam(int kor, int eng, int math) {
super();
this.kor = kor;
this.eng = eng;
this.math = math;
}
public final int getKor() {
return kor;
}
public final void setKor(int kor) {
this.kor = kor;
}
public final int getEng() {
return eng;
}
public final void setEng(int eng) {
this.eng = eng;
}
public final int getMath() {
return math;
}
public final void setMath(int math) {
this.math = math;
}
@Override
public String toString() {
return String.format("Exam[국어:%d 영어:%d 수학:%d]", kor, eng, math);
}
public int getTotal() {
return kor + eng + math;
}
public float getAvg() {
return getTotal() / 3.0f;
}
}
** jar 파일 생성
: 프로젝트 선택 후 우클릭 > Run As > Maven install 클릭
> 콘솔창에 확인해보면 아래의 사진과 같이 저장된 jar 파일 경로와 성공했는지 여부 확인할 수 있음
> 성공했다면 콘솔창에 확인된 경로에 아래와 같이 jar 파일이 확인됨
16. 다른 프로젝트에서 만든 라이브러리 불러오기
** 인덱스 Rebuild(업데이트)
: Local Repository 선택 후 우클릭 > Rebuild Index 클릭 > 팝업 창 OK 클릭
> 아래의 사진과 같이 아까만든 jar 파일을 볼 수 있음
** 다른 프로젝트에서 라이브러리 불러오기
: 아까 Import한 javaPrj 프로젝트 pom.xml에서 Dependencies 모드 > Add 클릭
> 라이브러리 추가
> 저장하면 라이브러리 추가 완..!!
> 아래의 사진과 같이 확인되면 정상적으로 라이브러리가 불러와진 것임,
동일 워크스페이스인 경우 폴더 모양이며 아무것도 열리지 않는다.
** 실질적으로 라이브러리를 불러와서 사용하는 모습..!!
'웹_프론트_백엔드 > JAVA프레임윅기반_풀스택' 카테고리의 다른 글
2020.07.06 (0) | 2020.07.06 |
---|---|
2020.07.06 (0) | 2020.07.06 |
2020.07.02 (0) | 2020.07.02 |
2020.07.01 (0) | 2020.07.01 |
2020.06.30 (0) | 2020.06.30 |