Maven 입문 | 그밖에 | 톰캣 구동해서 app deploy 하기
Maven 프로젝트의 tomcat를 Apache Tomcat Maven Plugin에서 구동하는 방법에 대해 알아보겠다.
Goals
Goal | 설명 |
---|---|
tomcat7:deploy | Deploy a WAR to Tomcat. |
tomcat7:run | Runs the current project as a dynamic web application using an embedded Tomcat server. |
tomcat7:help | Display help information on tomcat7-maven-plugin. Call mvn tomcat7:help -Ddetail=true -Dgoal=<goal-name> to display parameter details. |
설정
명시적인 설정이 제공되지 않는다면 tomcat7 을 구동하며 다음 설정을 기본값으로 한다.
- Tomcat manager URL of http://localhost:8080/manager
- Authentication details of username admin and no password
- Context path of /${project.artifactId}
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
...
</plugins>
</build>
...
</project>
만약 finalName 으로 artifact 파일명을 변경했으면 다음과 같이 configuration 의 path 를 변경해야 함.
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.build.finalName}</path>
</configuration>
</plugin>
사용
다음 goal 을 실행해서 현재 프로젝트를 내장된 tomcat 을 통해 deploy 할 수 있다.
$ mvn tomcat7:run
context url
context url은 artifactId 와 동일하며 예로 testApp 면 http://localhost:8080/testApp 로 연결하여 deploy 된 내용을 확인할 수 있음 finalName 으로 artifact 를 변경(예: webApp.war 로 )했다면 http://localhost:8080/webApp 처럼 finalName 과 동일한 context 로 접근 context 를 / 로 매핑할 경우 아래의 configuration 참고
Configuration
tomcat이 사용하는 HTTP port 나 AJPPort 를 변경할수 있다.
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path> <!-- default artifactId -->
<port>18080</port> <!-- default 8080 -->
<ajpPort>18009</ajpPort> <!-- default 8009 -->
<httpsPort>18443</httpsPort> <!-- default 8443 -->
<contextReloadable>true</contextReloadable>
<keystoreFile>${user.home}/.keystore</keystoreFile>
<keystorePass>changeit</keystorePass>
</configuration>
</plugin>
또는 runtim에 maven.tomcat.xxxx 와 같은 형식의 property 로 설정 가능하다. 설정 가능한 property 는 http://mojo.codehaus.org/tomcat-maven-plugin/run-war-only-mojo.html 를 참고
property | 기본 값 | 비고 |
---|---|---|
port | 8080 | |
ajpPort | 8009 | |
httpsPort | 8443 | |
contextReloadable | true | |
keystoreFile | 없음 | https 용 인증서가 있는 키스토어 |
keystorePass | 없음 | https 용 개인키가 있는 키스토어 |
path | artifactId | Context path |
위의 설정을 runtime에 property 로 전달
$ mvn tomcat7:run -Dmaven.tomcat.port=18080 -Dmaven.tomcat.ajp.port=18009 -Dmaven.tomcat.httpsPort=18443 -Dmaven.tomcat.contextReloadable=true -Dmaven.tomcat.path="/"
필수 라이브러리 로딩
JDBC 나 JCE Provider 등 TOMCAT_HOME/lib 에 넣어야 하는 library 를 자동으로 로딩하려면 다음과 같이 <plugin> element 에 <dependency> 를 기술해 주면 된다. (http://stackoverflow.com/questions/9928829/tomcat7-maven-plugin-extradependency-seems-not-being-loaded)
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- tomcat 의 lib 폴더에 넣어야 하는 library 를 기술한다 -->
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc4</version>
</dependency>
</dependencies>
</plugin>
참조
https://www.lesstif.com/pages/viewpage.action?pageId=14090451