본문 바로가기
개인공부/Maven

2. 빌드 도구없이 jar파일 만들어보기 1탄

by yoondoo 2024. 10. 12.
728x90

빌드 도구 없이 jar 파일 만들어보기

자, Maven을 사용해서 빌드하기 전에 먼저 원시시대로 돌아가서 씨게 맞아봐야 이걸 왜 쓰는지 체감할 것이다.ㅋㅋㅋ

 

우리의 목적은 

`hello java!`를 출력하는 jar파일을 수동으로 빌드해서 만들기다.

 

시작해보장~

(참고로 VSCode를 사용할 예정입니다)

 

1. VSCode Project 생성

- VSCode를 실행해준다.

- ctrl(command) + shift + p 동시 입력

- create Java Project.... 선택

 

- No bulid tools 선택 -> ^^이번 게시글의 취지^^

 

- project root location 선택 후 project 이름 입력

- project 생성됨

 

 

- java.project.sourcePaths 지정해줘야하는데 프로젝트 생성하면 .vscode폴더 아래 settings.json에 이미 기본으로 되어있을 것이다.

- 반드시 src일 필요는 없는데 관례로 source -> src로 표기

- 모든 source 파일은 src 하위에 위치, package는 'src'를 포함하지 않음

- 원하는대로 편집도 가능하다. vi .vscode/settings.json or vscode 를 이용해서 설정

 

추가적으로 src 하위에 package를 생성해주겠다.

- package를 폴더로 봐도 무방하다.

- hello 하위에 Main.java 작성하기

package com.nhnacademy.hello;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello java!");
      }
}

 

- ctrl(command) + s 로 저장하고 한 번 실행해보기


2. compile

자 이번엔 컴파일을 해볼 것이다.

 

 

- mkdir out 으로 out directory를 생성해도 되고 아래 명령어를 바로 입력해도 out directory가 없으면 만들어준다.

- `-d`은 클래스파일을 별도의 디렉터리를 지정해서 저장할 수 있는 옵션이다. 즉, 컴파일러는 기본적으로 각 클래스파일을 소스(.java) 동일한 위치에 저장한다.

javac ./src/com/nhnacademy/hello/*.java -d ./out

% 주의 사항 : javac 뒤에 나오는 경로는 각자 실습하는 환경과 패키지에 따라 다를 수 있으니 각 환경에 맞게 입력해야 컴파일 된다.

 

- Main.class 파일이 생성된 것을 볼 수 있다.


3. Create hello.jar

주의사항 : jar 명령어를 입력한 위치에 jar 파일이 생긴다!

out 폴더 위치로 이동해서 진행해야 압축한 폴더의 최상위 루트?가 com부터 잡힌다.

 

out 폴더로 이동한 다음 진행하겠다.

cd ./out

jar --file  hello.jar --main-class com.nhnacademy.hello.Main -c ./com

 

( -c 뒤의 com 위치를 잘못 적으면 저렇게 com 위치를 찾지 못한다.)

 

잘 생성했으면 아래 그림처럼 현재 있는 위치 기준으로 jar 파일이 생성된다.

 

jar 명령어를 설명해보면

 

jar : 이 명령어는 JAR(Java ARchive) 파일을 생성, 업데이트, 또는 열람할 때 사용, JAR 파일은 여러 클래스 파일 및 리소스를 하나로 묶는 압축 파일 형식

 

--file : `--file` 옵션은 파일 이름을 지정하는 옵션이다.

즉, 위의 코드는 `파일이름을 hello.jar로 해주세요`라는 뜻이다.

 

--main-class : `--main-class` 옵션은 JAR파일 안에서 메인 클래스를 지정하는 것이다. 해당 정보는 JAR파일의 메타데이터에 저장된다. 쉽게말해 JAR 파일을 실행 했을 때 사용할 메인 클래스를 지정하는 것이다.

즉, 위의 코드는 `com.nhnacademy.hello.Main를 메인 클래스로 지정하겠습니다` 라는 뜻이다.

 

-c : `-c` 옵션은 압축될 directory를 지정하는것이고 그 안의 모든 파일과 서브 directory들을 포함한다.

 


4. execute hello.jar

만든 jar 파일을 실행해보자!

 

 

아주 잘 된다!

 

jar 파일의 내용을 확인하고 싶으면

jar -tf hello.jar

 

그리고 압축한 jar파일을 해제해보면

unzip hello.jar

 

내용을 확인할 수 있다.

 

- MANIFEST.MF 파일을 잠깐 눌러보자.

 

 

- 아까 얘기한 메인 클래스를 지정한 부분이 나온다.

- 이런식으로 메타데이터를 저장해놔서 jar파일을 실행하면 자동으로 메인 클래스를 찾아서 실행할 수 있는것이다.

반응형

'개인공부 > Maven' 카테고리의 다른 글

5. Maven Archetype Plugin, Maven 프로젝트 생성  (1) 2024.10.13
4. Maven  (3) 2024.10.13
3. 빌드 도구없이 jar파일 만들어보기 2탄  (0) 2024.10.13
1. 빌드 도구  (1) 2024.10.12

댓글