intelliJ - Java 프로젝트 생성 및 Git / Github 연동
안녕하세요. 이번 시간에는 intelliJ에서 Java 프로젝트를 생성하고 이를 Github과 연동하는 방법을 정리하겠습니다. 이전에 사용하던 STS4도 프로젝트를 Git / Github을 연동하여 터미널 상에서 명령어 없이 클릭 몇 번으로 수행할 수 있었지만, intelliJ는 이보다 훨신 더 직관적으로 이 과정을 수행할 수 있습니다.
해당 글은 MacOS를 기준으로 작성되었습니다. 하지만 Windows 환경에서 사용하시는 분들도 인터페이스가 완전히 다르지 않기 때문에 해당 글을 참고하셔서 세팅을 진행하실 수 있을 것입니다.
(세팅환경 정보)
OS : Mac OS Monterey 12.5.1
IntelliJ : 2022.2.1 (Ultimate Edition)
우선 설치했던 intelliJ를 실행합니다. 최근에 열었던 프로젝트가 없다면 아래와 같은 창이 뜹니다. 여기서 "New Project"를 클릭합니다.
"New Project"를 클릭하면 아래와 같은 창이 나타납니다. 여기서 우리가 설정할 부분은 아래와 같이 총 5가지가 있습니다.
1. Name - 프로젝트 이름
2. Location - 프로젝트가 저장되는 위치
3. Language - 프로젝트에서 사용할 언어
4. Build System - 프로젝트와 함께 연동해서 사용할 Build System
5. JDK - 프로젝트에 사용할 JDK
1, 2의 경우 각자 원하는 대로 선택하여 진행하면 됩니다.
Language
프로젝트에서 사용할 프로그래밍 언어를 선택하는 부분입니다. 우리의 경우 Java 프로젝트를 만들 것이기 때문에 Java를 선택합니다.
Build System
프로젝트에 연동해서 사용할 Build Sysem입니다. Build System은 dependency 관리, testing 등등 정말 많은 기능을 지원하지만 우리는 여기서 대표적으로 dependency를 관리할 목적으로 사용합니다. 대표적으로 "Maven"과 "Gradle"이 사용되며 우리는 Maven을 사용합니다.
여기서 말하는 dependency 관리는 Build System을 사용하지 않을 경우 우리가 JDK에서 지원하는 기본 클래스 이외에 외부 라이브러리를 사용하고 싶은 경우, 해당 파일들을 다운로드하여 직접 프로젝트 안에 추가해주는 수고가 필요했습니다. 하지만 Build System을 사용하면 Maven의 경우 pom.xml 이라는 파일에 사용하는 모든 외부 라이브러리들을 xml 파일 형태로 명세하고, 해당 라이브러리의 동작에 필요한 파일들을 자동으로 다운로드하여 구성합니다.
이와 같은 방식을 사용함으로써 프로젝트에서 사용하는 외부 라이브러리들의 추가 및 버전관리가 편리해진다는 장점이 있습니다.
JDK
프로젝트가 컴파일 시 사용할 JDK의 버전을 의미합니다. intelliJ의 경우 사용자가 따로 jdk를 설치하지 않아도 intelliJ가 기본적으로 가지고 있는 jdk가 있어 프로젝트 실행에는 문제가 없지만 jdk 설치를 진행하신 후 진행하시길 권장 드립니다. jdk는 Oracle, openJDK, Amazon Corretto 등등 다양한 버전이 존재합니다. 본인이 원하시는 버전을 설치하신 후 진행하시기 바랍니다.
아래와 같이 설정을 마치고 "Create"를 클릭하여 다음 단계로 넘어갑니다.
정상적으로 프로젝트 생성을 마쳤다면 아래와 같이 프로젝트가 구성된 것을 확인하실 수 있습니다. 위에서 언급한 것처럼 Maven과 연동되어 프로젝트가 생생되면서 pom.xml 파일이 같이 생성된 것을 확인할 수 있습니다. 이후 프로젝트에 추가하고자 하는 라이브러리들이 있을 경우, 해당 파일에 명세하게 될 것입니다. 하지만 지금은 사용하지 않으므로 닫아주시면 됩니다.
정상적으로 프로젝트가 생성되었다면 아래와 같은 구조를 가지게 될 것입니다.
프로젝트를 구성하는 각 요소들은 각각 다음과 같은 역할을 합니다.
1. main/java - 실질적으로 작성하는 소스코드(*.java)가 위치하는 경로입니다.
2. test/java - 작성한 소스코드를 테스트하기 위한 테스트 코드가 위치합니다. 해당 단계에서는 사용하지 않습니다.
3. pom.xml - Maven으로 dependency를 관리하기 위한 파일 입니다.
예를 들어 아래와 같이 Main 이라는 Class를 생성 후 다음과 같이 코드를 작성해보았습니다.
intelliJ는 우측 상단 메뉴를 보면 아래와 같이 해당 프로젝트를 실행할 수 있는 버튼이 있습니다. 하지만 처음 프로젝트를 생성한 상황이라면 실행버튼이 비활성화 되어있는 것을 확인할 수 있습니다. Java는 결국 main 이라는 이름을 가진 메서드가 있어야 실행할 수 있고, 이것이 Java로 작성된 프로그램 코드가 동작하는 Flow의 메인이라고 할 수 있습니다. 따라서 intelliJ가 main method가 어디에 있는 지 지정해줘야 합니다. 이 과정은 "Add Configuration"을 선택하여 지정할 수도 있지만 이보다 더 간단한 방법을 소개하겠습니다.
작성한 소스코드 파일을 보면 main method 옆에 실행버튼이 활성화 된 것을 확인할 수 있습니다. 해당 버튼을 클릭하고 "Run Main.main()" 이라는 옵션을 선택합니다.
그럼 main method가 실행되고 아래와 같이 정상적으로 컴파일 결과가 출력되는 것을 확인할 수 있습니다.
위의 과정을 한번 거쳤다면 intelliJ 프로젝트 화면의 우측 상단에 해당 프로젝트를 실행하는 버튼이 활성화 된 것을 확인할 수 있으며, 앞으로 소스를 실행할 때 해당 버튼을 클릭하여 실행하면 됩니다. 또한 프로그램이 실행되는 중에는 사각형으로 표시된 부분이 빨간색으로 활성화 되는 데, 무한루프와 같이 프로그램을 강제로 종료해야하는 경우 사용할 수 있습니다.
그렇다면 이제 프로젝트를 Git / Github과 연동해보도록 하겠습니다. intelliJ의 상단 메뉴에서 "IntelliJ IDEA" => "Preferences"로 진입합니다.
그 후 왼쪽 메뉴에서 "Git" 이라는 메뉴를 선택합니다. Git이 이미 설치되어 있는 상황이라면 아래와 같이 자동으로 Git이 설치된 path가 잡혀있을 것입니다. 만약 이렇다면 따로 Git에 대해서 설정해줄 부분은 없습니다. MacOS의 경우 Git이 기본적으로 설치되어 있기 때문에 따로 설치할 일은 거의 없을 것입니다. 만약 Git이 설치되어 있지 않은 경우라면 아래의 링크를 참고하시기 바랍니다.
Git이 정상적으로 설치된 것이 확인되었다면 이제 현재 생성한 프로젝트와 Git을 연결해주는 과정이 필요합니다. 우리는 이를 "프로젝트에 Git Repository"를 생성한다고 표현합니다. 프로젝트와 Git, 그리고 Github을 연동해서 관리하게 되면 아래와 같은 연동 구조를 가지게 됩니다 (전체적인 구조를 이해하는 목적으로 참고하시기 바랍니다).
하지만 프로젝트를 만들 때부터 Git Repository가 생성되지는 않습니다. Git Repository를 먼저 생성한 뒤, Github과 연결하여 프로젝트의 버전관리를 시작해야합니다. 터미널 상에서라면 해당 프로젝트 디렉터리에서 "git init" 명령어를 사용했겠지만, intelliJ에서는 이를 명령어 입력없이 처리할 수 있습니다.
우선 상단의 메뉴바에서 "VCS"라는 메뉴에서 "Create Git Repository"를 선택합니다. 이후 Git Repository를 어디에 생성할 지 선택하는 창이 나오는 데, 프로젝트의 Root Directory로 지정해주면 됩니다.
정상적으로 Git Repository를 생성했다면 프로젝트 내의 모든 파일들이 빨간색으로 나타나는 것을 확인할 수 있는 데, 이는 뒤에서 자세히 설명하도록 하겠습니다.
추가적으로 .gitignore 라는 파일을 파일을 확인할 수 있습니다. 해당 파일에는 Git Repository와 연동할 필요가 없는 파일들을 명세하게 되며, .gitignore에 명세되지 않은 파일들은 Git에서 버전관리를 하지 않게되어 Add 및 Commit 과정에 포함되지 않습니다. 이를 가리켜 "Tracking 하지 않는다" 라고 표현합니다.
이 과정까지 정상적으로 마쳤다면 이제 우리는 프로젝트를 Git과 연동하여 버전관리를 할 수 있게 된 것 입니다. 그렇다면 이제 Github과 현재 우리의 로컬 저장소에 있는 Git Repository를 연결해보도록 하겠습니다. 이전에 보여드렸던 이 구조를 기억하시기 바랍니다 (아래의 구조도에서는 github이라고 명세했지만 "Remote Repository"라고 표현할수도 있습니다)
이후 GitHub 이라는 탭으로 이동합니다. 저의 경우 이미 등록된 계정이 있어 다음과 같이 나타나지만 이전에 추가한 계정이 없을 경우 비어있을 것입니다. 여기에 각자 사용하시는 Github 계정을 추가해주시면 됩니다. 상단에 보이는 "+"를 선택합니다.
"+" 버튼을 클릭했다면 아래와 3가지 옵션이 나타나는 데 여기서 1번 또는 2번으로 진행할 것입니다. 1번의 경우 Github에 로그인 하는 것처럼 Github 계정을 등록하는 방식이고, intelliJ에서 안내하는 절차대로 진행하시면 됩니다. 하지만 Github이 Token 방식으로 인증방식을 변경한 이유로 이 계정을 사용한 등록이 제대로 이뤄지지 않는 경우가 많습니다. 이러한 경우 2번으로 진행하셔야 합니다. 2번을 진행하기 위해서는 그 전에 계정에 엑세스하기 위한 Token을 발급받는 절차가 필요합니다. 해당 절차의 경우 아래 링크를 참조하시기 바랍니다.
정상적으로 계정추가가 완료되었다면 아래와 같이 자신의 Github 계정이 등록된 것을 확인할 수 있을 것입니다. 이는 intelliJ에 해당 계정이 추가된 것이므로 이후 생성하는 다른 프로젝트에 대해서도 동일한 계정을 사용할 수 있습니다.
여기서는 2가지 방법으로 접근할 수 있습니다.
1. Github에서 Repository를 생성한 뒤 프로젝트를 이 Repository와 연결
2. 현재 프로젝트를 바로 Github으로 올려서 연결
=> 이 두 과정이 내부적으로 동작하는 방식은 동일합니다. 단지 Github Repository를 생성 후 프로젝트와 연결해주는 과정을 본인이 직접할 것인지, 아니면 이 과정을 intelliJ가 자동으로 처리하도록 할 것인지에 대한 차이입니다. 2번이 절차가 더 간단하지만 학습의 목적을 위해서 1번을 직접 해보시는 것도 권장드립니다.
이 글에서는 1, 2번을 모두 진행해보도록 하겠습니다.
1. Github에서 Repository를 생성한 뒤 프로젝트를 이 Repository와 연결
우선 생성하신 각자의 Github 계정에 로그인한 뒤 "Repository" 라는 탭으로 이동합니다. 그리고 오른쪽에 보이는 "New"를 클릭합니다.
그 후 Repository의 이름을 지정하고 Public or Private을 지정한 뒤 아래에 있는 "Create repository"를 클릭하여 생성을 진행합니다.
정상적으로 생성되었다면 아래와 같은 창이 나타날 것입니다. 여기서 빨간색으로 표시된 부분은 나중에 해당 Repository와 프로젝트를 연결하는 데 사용되는 url 입니다.
그렇다면 다시 프로젝트로 이동해보겠습니다. 뒤에서 자세히 설명하겠지만 프로젝트가 Git과 연동이 완료된 시점에서 itelliJ의 우측 상단을 보면 다음과 같이 새로운 버튼이 나타난 것을 확인할 수 있습니다. 뒤에서 자세히 설명하겠지만 2번이 "Commit"을 수행하는 버튼입니다.
우리는 이전에 프로젝트에 Git Repository에 Commit하지 않았으므로 우선 이 과정을 먼저 진행해주겠습니다. 2번 버튼을 눌러주면 아래와 같이 Add 및 Commit 해야할 파일들의 리스트와 함께 Commit 메시지를 입력해주는 란이 나옵니다. 적절한 Commit 메시지를 입력 후 하단에 있는 "Commit" 또는 "Commit and Push..."를 선택합니다 (Commit을 선택할 경우 위 상단의 3번 버튼을 클릭해서 Push를 한번 더 진행해줘야 하고, "Commit and Push..."를 선택한 경우 Commit과 Push가 한번에 진행됩니다). 둘 중에 원하는 것을 선택하셔서 진행하시면 됩니다. 하지만 "Commit and Push..."를 사용하면 Remote Repository (Github)으로 변경된 내용이 한번에 올라가기 때문에 실수한 부분이 있을 경우 이를 수정할 수 있는 여지가 없기 때문에 신중히 사용하시기 바랍니다.
하지만 Commit 후 Push를 진행하려고 하면 아래와 같은 창이 나타날 것입니다.
이러한 창이 나타나는 이유는 어떤 Remote Repository(= Github Repository)와 프로젝트를 연결할 것인지 설정된 바가 없기 때문입니다. 따라서 이를 지정해주기 위해 상단에 있는 "Define Remote"를 선택합니다.
그럼 위와 같은 창이 나타날텐데 위의 창에서 말하는 URL은 이전에 Github에서 Repository를 생성한 뒤 생성된 URL을 말합니다.
오른쪽과 같이 해당값을 복사하여 URL에 넣어줍니다. 그리고 OK를 눌러주면 다음과 같이 Push할 파일들이 나타나고 "Push"를 선택하여 Github Repository에 프로젝트를 연동할 수 있게 됩니다.
2. 현재 프로젝트를 바로 Github으로 올려서 연결
그렇다면 이제 생성한 프로젝트를 github에 push 하겠습니다. IntelliJ의 상단 메뉴를 보면 "VCS(=Version Contorl System)"라는 메뉴가 있습니다. 여기서 "Share Project on Github" 이라는 메뉴가 있습니다. 이를 선택합니다.
그러면 아래와 같이 자신의 Github Repository에 생성할 Repository의 이름과 public & private, remote, description 등을 선택할 수 있습니다. 일반적으로 public으로 공개하고 싶은 프로젝트라면 특별히 더 설정할 부분은 없습니다. 그리고 "Share"를 클릭해주면 됩니다. 그럼 오른쪽과 같이 commit할 파일들과 함께 Commit 메시지를 입력할 수 있는 창이 나타납니다 (Push를 하기 위해서는 프로젝트의 변경 내용에 대해서 이미 Git Repository에 Add 및 Commit이 되어 있어야 한다는 점을 기억해주세요).
그리고 Github에 이동해보면 아래와 같이 정상적으로 Java 프로젝트를 Github으로 올린 것을 확인할 수 있습니다.
이 과정까지 마쳤다면 Java 프로젝트를 생성하고 이를 Git / Github과 연동한 것입니다. 그렇다면 마지막으로 연동을 마친 상황에서 이를 사용하는 방법에 대해서 알아보도록 하겠습니다.
프로젝트가 github과 연동을 마치게 되면 아래와 같이 상단 메뉴에 "Git:" 이라는 탭으로 3개의 버튼이 제공됩니다.
각각의 버튼은 git의 다음 명령어와 매칭됩니다.
1. git pull origin master - 현재 연동된 Github Repository의 내용을 pull 해옵니다.
2. git commit -m "..." - 현재 변경된 내용을 add 및 commit 합니다.
3. git push origin master - commit한 내용을 github repository에 push 합니다.
간단히 살펴보기 위해 이전에 예시로 작성했던 소스코드를 다음과 같이 수정하였습니다.
다음과 같이 가장 최근에 git과 연동된 내용과 비교해 변경사항이 발생할 경우 프로젝트 구조를 보면 다음과 같이 수정한 Main.java 파일의 색상이 변경된 것을 확인할 수 있는 데 이는 해당 파일이 "Modified" 상태임을 의미합니다.
이처럼 intelliJ는 프로젝트 구조에서 각 파일들을 표시하는 색상을 달리하여 해당 파일의 상태를 표시합니다. (색상의 경우 intelliJ에 적용된 테마 종류에 따라 조금씩 상이할 수 있으니 참고하시기 바랍니다.)
1. 빨간색 - 아직 Add 되지 않은 파일 (local에만 존재하고, git과 연동되지 않은 파일)
2. 초록색 - Add된 파일 (아직 Commit 하지는 않았으나 Add되어 Staging Area에 올라간 파일)
3. 노란색 - Modified 상태의 파일 (Add 및 Commit이 필요함)
4. 하얀색 - git repository와 연동이 완료된 파일 (commit 및 push가 완료된 파일)
특정 파일에 대해서 Add 등의 옵션을 사용하고 싶은 경우, 해당 파일을 우클릭 후 "Git"을 선택하여 관련 옵션들을 선택할 수 있습니다.
그렇다면 변경사항을 Commit 및 Push를 진행하도록 하겠습니다. 이전에 보았던 상단의 Git 관련 옵션에서 2번을 클릭합니다.
그럼 intelliJ 화면 좌측에 add 또는 modified, untracked 되는 파일들의 현황을 보여줍니다. 이제 원하는 Commit 메시지를 적은 후 Commit 또는 Commit과 Push를 한번에 수행할 수 있습니다.
그리고 Push 전 마지막으로 연동된 Github Repository에 Push될 파일 현황을 확인후 Push를 진행합니다.
최종적으로 아래와 같이 변경사항에 대한 Push가 이뤄진 것을 확인할 수 있습니다.
사람에 따라 터미널로 직접 명령어를 입력하여 Git과 Github을 관리하는 것을 선호하는 경우도 있지만, 타이핑 없이 몇번의 클릭으로 Git과 Github Repository를 관리하는 것은 꽤 유용한 기능이라고 생각됩니다. 앞으로 intelliJ를 사용하여 여러 프로젝트를 진행하시면서 유용하게 활용하실 수 있기를 바랍니다. 감사합니다.
'ETC > 개발환경' 카테고리의 다른 글
[웹 서비스 개발] Xampp - phpmyadmin 접속하기 (4) | 2022.09.26 |
---|---|
[웹 서비스 개발] Xampp 세팅하기 (for Mac) (0) | 2022.09.26 |
댓글
이 글 공유하기
다른 글
-
[웹 서비스 개발] Xampp - phpmyadmin 접속하기
[웹 서비스 개발] Xampp - phpmyadmin 접속하기
2022.09.26 -
[웹 서비스 개발] Xampp 세팅하기 (for Mac)
[웹 서비스 개발] Xampp 세팅하기 (for Mac)
2022.09.26