티스토리 뷰
1. Maven은 기본적으로 java, kt, scala, 같은 java vm기반의 코드를 컴파일한다.
2. 컴파일한 코드와 관련된 파일을 하나의 박스에 담는 package를 만든다.
2-1 다양한 패키지 형식을 지원하는데
2-1-1 jar (Java Archive) - 하나 이상의 class를 포함하는 zip압축 패키지
2-1-1-2 스프링이나 hibernate 라이브러리 같은 것)
2-1-2 war (Web Application aRchive) - 하나의 완전한 웹프로그램을 담은 zip압축 패키지이다.
2-1-2-1 여러 개의 jar파일과 클래스파일, 웹리소스를 가질 수 있다.
2-1-2-2 톰캣, 웹스피어 같은 웹컨테이너에서 실행된다.
2-1-3 ear (Enterprise ARchive)- 하나 이상의 war파일을 담을 수 있는 zip 압축 패키지이다.
2-1-4 Fat Jar - 모든 의존성을 다 담고 있는 실행가능한 Jar파일
2-1-4-1 스프링 부트의 기본 실행 파일
2-1-5 Docker Container - 실행환경, jvm, 자파 패키지 파일을 포함하고 있는 도커 이미지
2-1-4-2 microservice를 작성에 유리한 실행환경을 포함한 패키지, 현재 트랜드이다.
3. 자바 컴파일, 패키징 하기 - 아래 같은 내용이 maven으로는 간단하게 가능하다.
3-1 완전 옛날 방식의 자바 파일의 생성하고 패키징하는 방법은 아래와 같다.
3-1-1 우선 HelloWorld.java를 만들었다.
3-1-2 컴파일하고 실행가능하다. 그리코 jar로 패키징도 가능하고 실행도 가능하다.
3-1-2-1 아래의 경우 jar에 실행파일이 설정되지 않았으므로 실행파일을 지정해야 한다.
3-1-2-2 classpath 역시 설정하지 않으면 동작하지 않는다.
3-1-3 패키지를 살펴보면 따로 아래처럼 살펴보면
3-1-3-1 압축해지를 하면 META-INF 폴더가 추가로 생성되고 내부에 MANIFEST.MF파일이 생긴다.
3-1-3-2 나노로 열어보면 아래와 같이 jar의 설정정보가 들어 있다.
3-1-3-3 여기에 실행클래스 정보 같은 것이 설정되어 실행가능한 jar로 동작하게 된다.
4. 외부 라이브러리 사용하기
4-1 폴더를 하나 만들고 아파치 commons lang3를 받아왔다.
4-2 이제 라이브러리를 사용하도록 수정한다.
4-3 소스코드를 변경했으니 이제 classpath에 걸어 컴파일하고 실행한다.
4-3-1 두번째 Hello Maven World가 첫 글자 만 대문자인것을 확인할 수 있다.
4-4 쓸대없이 복잡한 이런 과정을 Maven을 이용하면 쉽게 처리할 수 있다.
'Side Technologies' 카테고리의 다른 글
Maven : Visual Studio Code로 메이븐 프로젝트 생성 (0) | 2020.07.20 |
---|---|
Maven : 명령실행하기 (0) | 2020.07.20 |
MySql : 테이블 이름 바꾸기, 테이블의 Primary Key 지정 삭제하기, 컬럼 위치 변경하기, 테이블 auto_increment 초기화 (0) | 2020.05.18 |
MySql : MySql 8.0이상 caching_sha2_password authentication plugin 문제해결 (3) | 2020.05.18 |
MySql : UTF-8 설정 (0) | 2020.05.12 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- Security
- 외부파일
- hibernate
- form
- 설정
- 매핑
- spring boot
- 상속
- login
- 스프링부트
- 하이버네이트
- RestTemplate
- Spring
- one-to-many
- MYSQL
- one-to-one
- XML
- WebMvc
- crud
- Rest
- 자바
- Validation
- mapping
- 설정하기
- Many-To-Many
- 로그인
- 스프링
- Angular
- jsp
- Spring Security