티스토리 뷰

Spring/Maven

컴파일과 실행하기

GrapeMilk 2020. 4. 23. 13:26

Goal 

 - Maven을 생성한 프로젝트에 만들어진 소스코드를 수정하고 컴파일 해본다

 - 소스코드를 패키지화 해보고 실행한다.

 - 빌드와 툴 Java의 컴파일 방식에 대해 알아본다.

 

이번 포스트에서는 Maven을 사용하여 프로젝트 안의 소스코드를 컴파일하고 실행해 볼 것이다

 

보통 Java로 코딩을 할 때는 이클립스와 같은 IDE를 사용하기 때문에 IDE의 Run버튼을 누르는 것 만으로 소스코드를 매우 간단히 실행할 수 있다.

 

Maven에서는 콘솔환경에서 컴파일과 실행을 수행한다.

 

1. Maven으로 소스코드 컴파일 및 실행

1. 컴파일

1) 컴파일 절차

콘솔창 열기 (윈도우 cmd) -> 프로젝트가 저장된 maven 디렉토리 이동 -> 프로젝트 javaprj 디렉토리 이동.

 

 프로젝트 디렉토리에는 pom.xml 파일이 있다. 프로젝트를 컴파일하거나 실행할때는 반드시 pom.xml이 있는 디렉터리에서 메이븐과 관련된 명령어를 이용해야 한다.

 

pom.xml이 있는 디렉토리에서 mvn compile 입력 -> 컴파일이 완료되면 target 폴더가 생성되고, target 폴더 안에 class 파일이 생성됬다는 문구를 콘솔창에서 확인할 수 있다.

 

*compile 명령어 입력 버전오류가 발생한다면

콘솔창에 어느 버전 이상을 사용해야 하는지 문구 확인 후 pom.xml 파일 열기 -> 밑의 문구를 pom.xml 파일 밑에 입력하기.

</dependencies>
<properties>|
	<maven.compiler.source>1.8</maven.compiler.source> <!-- source를 1.8이상으로 실행 하라 -->
        <maven.compiler.target>1.8</maven.compiler.target>
</properties>

2. 실행 및 패키지화 

 - 컴파일 완료 후에는 해당파일을 실행하거나 패키지화 할 수 있다

 

1) 패키지화

pom.xml이 있는 디렉토리에서 mvn package 입력 -> 수행을 완료하면 jar파일을 만들어주고 target에 해당 파일을 만들어준다. (Building jar: D:\maven\javaprj\target\javaprj-1.0-SNAPSHOT.jar라는 문구가 확인되면 정상적으로 패키지화가 완료된 것임.)

 

2) 컴파일 된 파일 실행

 - 컴파일 된 App.class 파일을 실행

소스코드를 컴파일하면 target의 classes폴더에 class 파일이 생성되고 해당 class 파일을 실행하기 위해서는 밑의 명령어를 입력한다.

java -cp target\classes com.newlecture.App 

 - 패키지화 했던 taget폴더의 jar파일 실행.

java -cp target\javaprj-1.0-SNAPSHOT.jar com.newlecture.App

target폴더의 jar파일 안의 com.newlecture.App파일 을 실행하는 의미의 명령어를 입력하면 -> 안에있는 내용인 class파일이 실행되어 파일 안의 내용을 출력한다.

 

* java 소스파일을 수정했을 경우에는 변경된 내용을 적용하여 실행하고 싶으면, 다시 컴파일 하고 패키지화 한뒤에 실행하면 된다.

 

이처럼 메이븐은

컴파일, 패키지 & 프로젝트 생성을 도와준다.

메이븐을 통해 콘솔로 이런 작업을 진행하는 것 보다 이클립스로 개발하는게 더 편하기 때문에. 아직까지 메이븐의 매력을 못느낀다. 심지어 메이븐은 편집기능도 없다.. 하지만 메이븐과 이클립스를 같이 사용하면 그 장점을 체감할 수 있다 계속되는 포스팅에서 그 장점을 알아가보자.

 

3. 컴파일과 빌드 개념 정리

1) 컴파일과 빌드

컴파일 : 개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정 (목적파일이 생성됨)

즉, 컴파일은 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업을 의미하며 컴파일을 수행하는 프로그램을 컴파일러라고 한다. 

 

컴파일 흐름도

소스 파일 -- 컴파일러 -- 기계어로 된 파일

( high level language --> low level language )

 

빌드 : 소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정을 말함

빌드의 단계 중 컴파일이 포함되어 있는데 컴파일은 빌드의 부분집합이라 할 수 있다.

빌드 과정을 도와주는 도구를 빌드 툴이라 한다.

 

빌드 툴 : 일반적으로 빌드 툴이 제공해주는 기능으로는 다음과 같다

전처리(preprocessing), 컴파일(Compile), 패키징(packageing), 테스팅(testing), 배포(dstribution)

빌드 툴로는 Ant, Maven, Gradle 등이 있다.

 

2) 자바에서의 컴파일

자바의 경우, 컴파일을 하여 자바가상머신(JVM)에서 실행가능한 바이트코드 형태의 클래스파일을 생성한다.

 

.java 파일 : java 규칙에 맞게 작성한 모든 소스코드 파일. 특징은 for human. 사람이 읽을 수 있는 text로 구성되어 있음.

 

JVM : 바이트코드와 컴퓨터의 운영시스템간의 번역기 역할을 수행하며 자바의 소스코드가 컴파일되어 만들어진 바이트코드를 컴퓨터의 명령어로 해석해주는 역할을 수행한다. 소스코드의 Main method를 통해 JVM을 실행한다.

 

JVM을 통한 플랫폼 독립 : 자바소스 파일을 컴파일을 통해 바이트코드로 변환하면, JVM이 설치만 되어 있으면 플랫폼 독립적으로 다양한 환경의 하드웨어 및 OS 어디서든 실행이가능하다. (JVM은 많은 운영체제에서 지원되기 때문에 운영체제에 JVM을 설치하면 동일한 바이트 코드 파일로 다양한 환경에서 Java코드를 실행될 수 있다.)

 

바이트코드 (bytecode) : 자바의 실행환경에서 실행되기 위해 최적화된 코드의 집합.

 

자바에서 컴파일 흐름도

Hello.java ----> Compiler ----> Hello.class ------> JVM ------> Hello

 

 

'Spring > Maven' 카테고리의 다른 글

Maven in Eclipse  (0) 2020.04.23
Build LifeCycle, Phase (Maven)  (0) 2020.04.23
Maven으로 자바 프로젝트 생성하기  (0) 2020.04.23
Maven 설치하기  (0) 2020.04.23
메이븐 (Maven) 이란?  (0) 2020.04.23
댓글