(포스팅 준비 및 작성하는 도중 IntelliJ 가 2017.1 로 버전업데이트를 했습니다. ㅠㅠ)
* 인텔리J 만의 개념 잡기
이전 포스팅에서도 살짝 언급이 된 사항이지만 다시한번 설명하자면 인텔리J에서는 프로젝트 중심의 개발환경입니다. 반대로 이클립스는 워크스페이스 기반의 개발환경입니다. 하지만 여기서는 인텔리J를 그나마 이클립스처럼 사용하기 위한 프로젝트 생성 방법입니다. 참고로 폴더 구조와 기타 프로젝트 구조는 저만의 방식을 사용하기때문에 업계표준이 아님을 본격적인 포스팅에 앞서 알려드립니다.
이클립스와 다른 폴더 개념 다시 잡기
이클립스에서는 "워크스페이스" 내에 여러개의 "프로젝트"로 이루어져있습니다. 이 내용은 이클립스 기준입니다. 이제 동일하게 인텔리J로
인텔리J에서는 "프로젝트" 내에 여러개의 "모듈"로 이루어져있습니다.
더불어 기타 폴더구조의 이름이 다른점은 아래를 참고하시면 됩니다.
Eclipse | IntelliJ IDEA |
---|---|
Workspace | Project |
Project | Module |
Facet | Facet |
Library | Library |
JRE | SDK |
Classpath variable | Path variable |
위와같이 용어에 따른 변화와함께 이클립스에 익숙하면서 Spring Boot 기타 프레임워크 메이븐 등이 아닌 프로젝트를 생성해 보도록 하겠습니다.
* 추가설명 : 실은 IntelliJ의 장점중 하나가 프로젝트 준비 시간 단축이지만(STS등에서 제공되는..) 이번 포스팅에서는 이클립스에서 넘어올때 익숙치 않은 분을 위해 건너뜁니다.
* 아파치 톰캣 설정
웹 프로젝트에서 중요한것은 개발하면서 서버 구동일것입니다. (/WAS) 먼저 프로젝트 생성하기 이전에 톰캣 경로(Path) 부터 잡도록 하겠습니다.
* 추가설명 : 인텔리J Plugins 에서 Tomcat and TomEE Integration 이 사용 설정이 되어있지 않으면 설정해 줍니다. Jboss Jetty Weblogic 등도 마찬가지로 플러그인 형태로 제공되고 있습니다. 여기서는 Tomcat 기준입니다.
인텔리J를 실행시킨뒤 Configure -> Setting 로 들어가줍니다.
Settings 창이 뜨면 위 이미지와 같이 항목을 이동해 줍니다. + 버튼을 눌러 Tomcat Server 를 선택해 줍니다. (/ TomEE 로 하실분은 TomEE 로 선택하시면 됩니다.)
위와같은 창이 하나 더 뜬다면 Tomcat Home 부분의 ... 을 클릭하여 폴더를 선택합니다.
저는 혼동을 피하기위해 IDE 설치된곳에 항상 Tomcat 을 두는편입니다.
버전과 기타 등등이 설정이 되었다면 OK 버튼을 클릭해 줍니다.
위와같이 설정이 되었다면 OK 버튼을 눌러줍니다.
* 프로젝트(워크스페이스) 폴더 설정
* 들어가기에 앞서 아직 익숙치 않은 용어를 위해 괄호안에는 이클립스용어를 적어 넣었습니다.
프로젝트(워크스페이스) 생성을 위한 임의의 장소에 폴더를 생성합니다.
저는 E드라이브의 최상단에 intellij_project 폴더를 생성하였습니다.
인텔리J로 돌아와 Create New Project 를 클릭합니다.
프로젝트(워크스페이스)는 이클립스처럼 워크스페이스 용도로 쓰일 목적이기때문에 Empty Project 를 선택한후 Next 버튼을 눌러줍니다.
프로젝트(워크스페이스) 생성은 요새 포트폴리오용 블로그를 제작하고 있으니 일단 portfolio 로 해두록 하겠습니다.
여기서 중요한곳은 Project location 입니다. 처음 프로젝트를 만들때는 생성한 폴더 지정을 위해 주소값을 적어주셔야 합니다. 물론 하위 디렉토리에는 Project Name 과 동일한것이 좋습니다.
* 추가설명 - 여기서 잠깐 생각해보면 프로젝트(워크스페이스) 내에 다시 또 프로젝트(워크스페이스)를 만드는 꼴이 되어져 버립니다. 저는 이런식으로 구성하는 이유중 하나는 git이나 형상관리 할때 동일한 목적을 가진 프로젝트등을 Repository 를 따로두기 때문입니다.
* 모듈(프로젝트) 생성
창이 전환되면서 이제 위와같은 창이 하나 더 뜰것입니다. 이제 이클립스에서의 프로젝트를 추가해 보도록 하겠습니다.
+ 버튼을 눌러 New Module(프로젝트) 를 선택해 줍니다.
그럼 빨간 색의 부분만 보자면 Java Enterprise 를 선택해 줍니다. 그 아래의 청록색(Cyan) 부분으로 시작해도 되지만 이클립스처럼 하는것이 목표이기에 Java Enterprise을 선택합니다.
그리고 위와 같이 SDK(JDK) 를 선택해 주시고 Additional Libraries and Frameworks 에서는 Web Application 을 선택하시고 안에 Create web.xml 을 체크해 주신뒤에 위 이미지와 같이 설정해 주신뒤 Next 버튼을 눌러주시면 됩니다.
* 추가설명 : 만약 프로젝트를 Gradle 및 Spring Boot 로 구성한다 하면 청록색 부분을 선택하시고 진행하시면 됩니다. (Maven 은 제외 이유는 기존 프로젝트에서 변환이 가능함.)
이제 모듈(프로젝트) 이름은 이클립스와 비슷하게 작성하도록 하겠습니다. 저는 개인 프로젝트이므로 위와같이 정하였습니다.
Context root 를 위 이미지와 같이 확인해 주신뒤 Finish 버튼을 눌러줍니다.
모듈 생성이 완료가 되었다면 위와같은 화면이 될텐데 OK 버튼을 눌러주면 되겠습니다.
그럼 위와 비슷하게 폴더 구조가 생성이 되었을 것입니다.
이대로 바로 진행해도 상관은 없지만 여기서 maven 으로 추가하여 진행해 보도록 하겠습니다.
다음 항목에 마지막 부분에는 maven 아키타입 폴더 구조가 아닌 저만의 폴더 구조로 설정부분이 있으니 끝까지 읽어주시면 감사하겠습니다.
* Maven 프로젝트로 변환
프로젝트를 선택후 오른쪽 마우스 버튼을 누르면 위 이미지와 같이 나오는데 상단에 있는 Add Framework Support 버튼을 눌러줍니다.
메이븐으로 할 예정이니 Maven 으로 선택후 OK 버튼을 눌러줍니다.
* 추가설명 : 저는 Spring 을 쓸때도 maven dependency 를 이용하므로 잘 사용하진 않습니다. 더군다나 저 방법은 lib 폴더에 추가되는 방식입니다. 예) 이클립스내의 빌드패스로 jar 넣거나 WEB-INF 의 lib 폴더로 jar 파일을 넣는 것과 동일합니다.
그럼 Unknown.xml 이 생성이 되는데 이때 groupId 부분을 수정해주시면 알아서 pom.xml 을 생성합니다.
그리고 기다리시면 Maven 기본 아키타입인 폴더 구조로 생성이 됩니다.
이제 인텔리J에서 알기쉽게 폴더지정을 하도록 하겠습니다. 이클립스에서는 빌드패스를 다시 잡는다라고 생각하시면 되겠습니다.
다시 프로젝트 오른쪽 마우스 버튼을 클릭하신뒤 Open Module Settings F12 항목을 눌러줍니다.
* 추가설명 : 이것을 하는 이유는 log4J 와 JUnit 을 좀더 편히 쓰기위해 지정을 해서 사용을 합니다. log4j.xml 은 resource 폴더에 위치해야하는데 간혹 못찾는 경우등을 위해 인텔리J에서 폴더 지정을 위해 합니다.
모듈 세팅에 들어가면 위 이미지와 같이 resources 폴더를 오른쪽 마우스 버튼을 클릭하신뒤 Resources 를 지정합니다.
Test 폴더는 저 폴더 위치에 지정을 해 줍니다.
* 추가설명 : 저는 아래와 같은 폴더구조로 생성하였습니다. target 폴더는 생성 안하셔도 무방합니다.
아래 항목과 이어집니다.
* Artifactes(Build Setting) 설정
여기서는 두가지 방법이 존재합니다. 이제까지 maven 으로 진행하였으니 maven 방식으로 먼저 진행한후 마지막에는 maven 이 아닌 빌드를 설명하도록 하겠습니다.
1) Maven 으로 Artifactes 설정
* Maven 이 아닌 경우에는 건너뛰시어 2번 항목으로 가시기 바랍니다.
Artifactes 에 들어가셔서 하나 있는 항목을 삭제하여 주신뒤 OK 버튼을 누릅니다.
그리고 maven 설정인 pom.xml 파일을 열어 아래 이미지와 비슷하게 작성해 주시면 되겠습니다.
<packaging>war</packaging>
<name>[Your Name]</name>
<description>[Project Description]</description>
<properties>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
</properties>
<build>
<finalName>[Build final name / war file name ex) test]</finalName>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>[jre or jdk version ex)1.8 / 1.7]</source>
<target>[jre or jdk version ex)1.8 / 1.7]</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>web</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
기다리시거나 아니면 아래 이미지와 같이 pom.xml 을 오른쪽 클릭후
Generate Sources and Update Folders 가 나옵니다. 이때 이전에 설정해 주셨던 모듈에대한 폴더가 초기화될 수 있습니다. 초기화가 된다면 다시 잡아주시면 됩니다.
생성이 되고 이제 Build 를 해보면 Ctrl + F9 으로 빌드해도 되지만 여기서는 Build Artifacts 로 하도록 하겠습니다.
그럼 아래 이미지와 같이 두가지 항목이 생겼을겁니다.
한개는 war 로 빌드하는 방식과 하나는 war를 풀어헤친방식으로 빌드하는 방식입니다. 일단 첫 배포가 목적이니 첫번째항목을 선택하고 Build 를 해줍니다.
그럼 이제 build 가 되어 target 폴더에 생성이 되었을것입니다. 복사하시어 톰캣 단독 구동으로 넣어서 구동하시거나 하시면 됩니다.
2) maven 이 아닌 단독으로 Artifactes 잡기
( 이미지 상에는 이미 생성이 되어있습니다. )
Artifacts 에서 + 버튼을 눌러 추가해 줍니다.
Web Application Archive 을 선택하신뒤 For "모듈명(프로젝트)"를 선택해 줍니다. 그리고 OK 버튼을 눌러 완료합니다.
이때 생성되는 폴더에는 maven 과 다르게 프로젝트(워크스페이스) 상단에 out 이라는 폴더 안에 위치하게 됩니다. 물론 폴더 이동이 가능합니다.
그리고 빌드해 보도록 하겠습니다.
Ctrl + F9 으로 빌드해도 되지만 여기서는 Build Artifacts 로 하도록 하겠습니다.
그럼 아래 이미지와 같이 두가지 항목이 생겼을겁니다.
한개는 war 로 빌드하는 방식과 하나는 war를 풀어헤친방식으로 빌드하는 방식입니다. 일단 첫 배포가 목적이니 첫번째항목을 선택하고 Build 를 해줍니다.
그리고 out 폴더(프로젝트(워크스페이스) 상단에 out 이라는 폴더 현재는 /intellij_project/portfolio/out/ 에 위치)로 가서 확인하시면 되겠습니다.
* 마치며
이번 포스팅은 상당히 긴 포스팅이었습니다. 저도 인텔리J를 사용하면서 많은 블로그 포스팅을 확인해가며 진행하였습니다. 이글이 조금이나마 인텔리J를 사용함에 있어 도움이 되었으면 합니다.
* 레퍼런스
Migrating From Eclipse to IntelliJ IDEA(jetbrains.com/help/idea/2017.1/eclipse.html)
인텔리J 시작하기 Part2 (Getting Start IntelliJ) -자바 프로젝트편-(beyondj2ee.wordpress.com/2013/06/15/인텔리j-시작하기-part2-getting-start-intellij-자바-프로젝트편/)
'IDE > IntelliJ IDEA' 카테고리의 다른 글
인텔리J(IntelliJ) 제가 쓰는 플러그인 (0) | 2017.03.13 |
---|---|
인텔리J(IntelliJ) 이클립스 처럼 세팅 (0) | 2017.03.12 |
인텔리J(IntelliJ) 를 쓰는 이유 (장단점) (3) | 2017.03.08 |
댓글