Spring

[Spring] 메이븐 웹 어플리케이션 생성하기

사악미소 2020. 12. 12. 00:50

 

IDE : Spring Tool Suite 4( 개발환경 )

WAS : Apache Tomcat 8.0.9

 

 

STEP#01. 메이븐 웹 어플리케이션 프로젝트 생성하기

 

메이븐 프로젝트는 이클립스에서 생성하거나, 도스 명령행에서 mvn 명령어를 사용하여 생성하는 방법이 있다.

 

이클립스에서 메이븐을 편리하게 사용하기 위한 플러그인으로 m2eclipse를 사용할 수 있다.

 

표준프레임워크 개발 환경에는 m2eclipse 플러그인이 포함되어 있다.

 

 

표준 프레임워크에서는 두 가지 방식으로 메이븐 프로젝트를 생성할 수 있다.

 

① 개발 환경에서 제공하는 eGovFrame Perspective( 퍼스펙티브 )를 이용한 메이븐 프로젝트 생성

② 메이븐 아키타입( archetype ) 플러그인을 이용한 메이븐 프로젝트 생성

 

해당 포스팅에서는 개발 환경에서 제공하는 eGovFrame Perspective( 퍼스펙티브 )를 이용하여 메이븐 프로젝트를 생성할 것이다.

 

m2eclipse를 사용하면 이클립스 안에서 메이븐의

 

  • 디펜더시 설정
  • 플러그인 설정
  • pom.xml의 편집
  • 리포팅 설정

등을 간편하게 실행할 수 있다.

 

개발환경 : [ New ] → [ Other ] → [ Maven ] → [ Maven Project ] 를 선택한다.

 

 

 

Select a wizard 팝업창에서 Maven Project를 선택해준다.

 

 

 

Next 버튼을 클릭하여 다음으로 넘어간다.

 

 

 Group Id  org.apache.maven.archetypes
 Artifact Id  maven-archetype-webapp

 

위와 같이 선택하고 Next 버튼을 클릭한다.

 

 

 Group Id  com.maven.project
 Artifact Id  spring_web
 Version  0.0.1-SNAPSHOT
 Package  com.maven.project.spring_web

 

위와같이 입력및 선택하고 Finish 버튼을 클릭하면 메이븐 프로젝트가 생성된다.

 

 

 

 

생성된 pom.xml 파일 상단을 살펴보면

 

위에서 입력한 코디네이트 정보가 입력되어 있는것을 확인 할 수 있다.

# @File pom.xml

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.maven.project</groupId>
  <artifactId>spring_web</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>spring_weba Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

 

STEP#02. 톰캣 디플로이어 사용

 

톰캣 디플로이어는 웹 브라우저를 통해 서버에 웹 어플리케이션을 쉽게배포( deploy )할 수 있는 배포 관리자라고 보면 된다.

 

#01. tomcat-users.xml 설정하기

 

개발환경  : [ Servers ] → [ v8.0 Server at localhost-config ] → [ tomcat-users.xml ] 

 

tomcat-users.xml은 역할과 유저를 등록하는 부분이다.

 

( role )은 tomcat, manager-gui, manager-script, admin-gui 4가지를 등록한다.

 

rolename은 정해져 있는 값들인데, manager를 웹 화면에서 사용( manager-gui )하기 위한 역할과

 

메이븐 등의 스크립트에서 접근( manager-script )하기 위한 역할등을 의미한다.

 

# @File tomcat-users.xml

<!-- 코드 중략 -->

<!--
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <user username="tomcat" password="tomcat" roles="tomcat"/>
    <user username="both" password="tomcat" roles="tomcat,role1"/>
    <user username="role1" password="tomcat" roles="role1"/>
-->

    <role rolename="tomcat"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="admin-gui"/>
    <user 
        username="saakmiso" 
        password="1q2w3e" 
        roles="tomcat, manager-gui, admin-gui, manager-script"
    />
</tomcat-users>

 

userusernamepassword는 자유롭게 설정하면 된다.

 

그리고 설정했던 4개의 ( role )을 부여한다.

 

 

#02. server.xml 설정하기

 

개발환경  : [ Servers ] → [ v8.0 Server at localhost-config ] → [ server.xml ] 

 

서버 설정 파일에는 웹 어플리케이션 하나당 하나의 Context 태그를 사용하여 위치와 URL 패스정보를 저장할 수 있다.

# @File server.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- 코드 중략 -->

    <!-- port 변경 -->
    <Connector connectionTimeout="20000" port="8181" protocol="HTTP/1.1" redirectPort="8443"/>

<!-- 코드 중략 -->

        <!-- 톰캣 매니저 디플로이어 URL 지정 -->
        <Context path="/manager" privileged="true" docBase="${catalina.home}/webapps/manager"/>
        
      </Host>
    </Engine>
  </Service>
</Server>

path 부분에 지정된 값은 브라우저에서 요청을 보내는 URL경로 http://127.0.0.1:8181/manager가 될 것이다.

 

개발환경  : [ Servers ] → [ v8.0 Server at localhost-config ]을 실행한다.

 

 

브라우저를 열고 http://127.0.0.1:8181/manager 호출하고

 

tomcat-users.xml에서 지정한 사용자 이름과 비밀번를 입력하여 로그인 한다.

 

 

이로써 톰캣 서버의 디플로이어( deployer )를 사용할 수 있게 되었다.

 

 

 

 

STEP#03. 메이븐 톰캣 플러그인 설정

 

메이븐 프로젝트를 톰캣 서버에 배포하기 위해서는 톰캣 플러그인을 추가한다.

 

생성한 프로젝트를 선택하고 마우스 오른쪽 클릭 후 [ Maven ] [ Add Plugin ] 을 선택한다.

 

 

 

Add Plugin 창이 오픈되면 다음과 같이 입력한다.

 

 

 Group Id  org.apache.tomcat.maven
 Artifact Id  tomcat7-maven-plugin
 Version  2.2

 

이렇게 하면 pom.xml 파일에 톰캣 플러그인이 추가된 것을 볼 수 있다.

 

  # @File pom.xml
  
  <build>
    <finalName>spring_webapp</finalName>

    <!-- 코드 중략 -->

    <plugins>
    	<plugin>
    		<groupId>org.apache.tomcat.maven</groupId>
    		<artifactId>tomcat7-maven-plugin</artifactId>
    		<version>2.2</version>
    	</plugin>
    </plugins>
  </build>
</project>

 

tomcat7-maven-plugin 플러그인 태그 <version> 밑에 configuration, url, username, password 등을 추가하여 작성한다.

 

작성한 user와 password 정보는 tomcat-users.xml 파일에 반드시 기술된 값을 사용해야 한다.

 

최종적인 플러그인 태그는 아래와같다.

 

  # @File pom.xml
  
  <build>
    <finalName>spring_webapp</finalName>

    <!-- 코드 중략 -->

    <plugins>
    	<plugin>
    		<groupId>org.apache.tomcat.maven</groupId>
    		<artifactId>tomcat7-maven-plugin</artifactId>
    		<version>2.2</version>
            
          	<!-- configuration, url, username, password 추가 -->
            
          	<configuration>
          		<url>http://localhost:8181/manager/text</url>
          		<username>saakmiso</username>
          		<password>1q2w3e</password>
          	</configuration>
    	</plugin>
    </plugins>
  </build>
</project>

 

 

이제 Tomcat 8.0 서버를 구동한다.

 

개발환경  : [ Servers ] → [ v8.0 Server at localhost-config ] → [ 실행 ]

 

 

서버가 정상적으로 구동되면, 웹 어플리케이션에서 [ Run As ] [ Maven Build ] 를 작업을 수행한다.

 

 

Maven build가 실행되면 실행할 플러그인 값을 입력해 준다.

 

Goals tomcat7:deploy

 

위와같이 입력해주고 빌드를 실행시켜 보면 콘솔 뷰에서 BUILD SUCCESS 메시지를 확인할 수 있다.

 

[INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ spring_web ---
[INFO] Deploying war to http://localhost:8181/spring_web  
Uploading: http://localhost:8181/manager/text/deploy?path=%2Fspring_web
Uploaded: http://localhost:8181/manager/text/deploy?path=%2Fspring_web (3 KB)

[INFO] tomcatManager status code:200, ReasonPhrase:OK
[INFO] OK - Deployed application at context path /spring_web
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.462 s
[INFO] Finished at: 2020-12-15T21:45:19+09:00
[INFO] ------------------------------------------------------------------------

 

 

빌드가 성공했다면 브라우저를 통해 http://127.0.0.1:8181/메이븐_프로젝트명에 접속해보면

 

Hello World! 가 출력되는 것을 확인 할 수 있다.

 

 

 

설정이 완료되면 어떤 점들이 변경되는지 살펴보자.

 

  • Server Locations 부분이 비활성화되어 있어 변경이 불가능하다.
  • Use workspace metadata는 톰캣 서버가 인스톨된 디렉터리를 변경하지 않고, 이클립스의 워크스페이스 복베존을 따로 가지는 것을 의미한다.
  • Use Tomcat installation은 톰캣 서버가 인스톨된 디렉터리와 동기화하여 변경 사항이 그대로 반영되는것을 의미한다.
  • Use custom location은 톰캣 서버가 인스톨된 디렉터리를 변경하지 않고, 사용자가 사용할 디렉터리를 따로 지정하는 것이다.

 

변경을 원한다면 새롭게 서버를 등록해야 한다.

 

최초에 등록될 때 선택할 수 있고, 서버를 실행하고 어플리케이션을 배포하기 시작하면 변경이 불가능한 상태로 바뀐다.

 

그 아래 나오는 Server path 부분의 디렉터리를 찾아가면된다.

 

 

이클립스의 워크스페이스 아래에 .metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps 디렉터리를 찾아보면

 

 

개속해서 tomcat7:undeploy나 tomcat7:redeploy 등을 수행해보고,

 

위 디렉토리의 변화등을 살펴보자.

 

tomcat7 : undeploy 실행

 

 

tomcat7 : redeploy 실행

 

tomcat7:redeploy는 동일한 어플리케이션이 존재해도, 에러 없이 배포해주는 골( goal )이다.

 

지금은 로컬 작업 환경에서 테스트 하고 있지만, 원격 서버에도 바로 배포할 수 있다.

 

웹 어플리케이션을 제작하고 나면 실제 웹 서버에 배포한 이 후,

 

클라이언트 브라우저에서 접속이 가능하다.

 

 

플러그인 configuration 정보를 실제 연결하고자 하는 웹 서버의 주소와 사용자 이름, 패스워드 등을 입력하면 된다.

 

포트 번호는 서버가 80포트를 사용하는 경우 생략할 수 있다.

 

# @File pom.xml

    <!-- 코드 중략 -->

    <configuration>
        <url>http://웹_서버의_주소/manager/text</url>
        <username>사용자 이름</username>
        <password>비밀번호</password>
    </configuration>

 

 

메이븐 톰캣 플러그인은 톰캣 서버의 manager 기능을 사용한다.

 

이를 통해 웹 어플리케이션의 deploy 및 undepoy 등을 수행한다.

 

앞서 이를 위한 톰캣 manager 설정을 마치고, 메이븐의 pom.xml 파일을 수정하였다.

 

 

메이븐 톰캣 플러그인의 사용법은 http://tomcat.apache.org/maven-plugin.html에서 정보를 찾아 볼 수 있다.

 

Version 2.2를 선택하여 골( goal )들을 확인한다.

 

 

 

참고로 이클립스에서 컴파일하고 실행시키는 것이 아니므로 에러는 상관 없이 실행되지만, 에러를 없애고 싶다면,

 

[ properties  ] → [ Target Runtime ] → [ Apache Tomcat v8.0 ]을 체크하면 된다.

 

 

 

이렇게 하면 웹 어플리케이션을 실행시키기 위해 필요한 라이브러리 패스가 추가된다.

 

 

 

 

 

STEP#04. 메이븐 디펜던시 설정

 

 

메이븐 프로젝트 디렉터리 구조를 살펴보면 다음과 같다.

 

 src/main/java   · 자바 코드가 생성된다.
 src/main/resources  · 각종 설정 파일들이 위치한다.
 src/test/java  · JUnit 등의 테스트 코드들이 위치한다.
 src/test/resources  · 테스트 코드에서 참조하게 될 설정 파일들이 위치한다.
 pom.xml  · pom.xml 파일에 기술된 디펜던시 Maven Dependencies에 포함하고 있다.

 

그렇지만 위에서 생성한 프로젝트의 구조에서는 pom.xml을 제외한 다른 디렉터리는 생성되어 있지 않다.

 

pom.xml은 이미 생성되어 있기에 src/main/java, src/main/resources, src/test/java, src/test/resources를

 

각각 하나씩 생성해 주면 되는데 그전에 먼저 작업할 내용이 있다.

 

 

 

생성한 메이븐 프로젝트를 우클릭하고 [ Properties ] 를 선택한다.

 

 

 

[ Properties ][ Java Build Path ] → [ Source ] 경로로 이동해 준다.

 

 

src/main/java( missing ), src/test/java( missing )를 삭제해준다.

 

 

 

이제 생성한 메이븐 프로젝트에 디렉터리를 생성해 주면된다.

 

개발환경 : [ New ] → [ Other ] → [ Java ] → [ Source Folder ] 를 선택한다.

 

    ① src/mian/java

    ② src/main/resources

    ③ src/test/java

    ④ src/test/resources

 

위 순서대로 디렉토리를 하나씩 생성해 주면 된다.

 

 

 


Contains test sources:Yes로 변경을 해야하는데 되질 않는다.

이 이유는 추후 좀더 찾아볼 계획이다.