tomcat7-maven-plugin - 메이븐에서 톰캣 구동해서 app deploy 하기
개요
maven 에서 tomcat 을 구동할 수 있는 플러그인.
Goals
Goal | Description | |
---|---|---|
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> 를 기술해 주면 된다.
<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>
See Also
Ref
- http://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/plugin-info.html
- http://maven.apache.org/guides/mini/guide-configuring-plugins.html