С помощью Apache Maven можно в автоматизированном режиме разворачивать WAR-приложения на Apache Tomcat.
1. Авторизация в Apache Tomcat
Открываем файл conf/tomcat-users.xml в директории, куда распакован Apache Tomcat и добавляем роли manager-gui и manager-script:
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="admin" password="admin" roles="manager-gui,manager-script" /> </tomcat-users>
2. Разрешаем доступ Maven к Tomcat
Для этого открываем файл $MAVEN_HOME/conf/settings.xml и добавляем сервер:
<?xml version="1.0" encoding="UTF-8"?> <settings ...> <servers> <server> <id>TomcatServer</id> <username>admin</username> <password>admin</password> </server> </servers> </settings>
3. Добавляем плагин для автодеплоя
Открываем pom.xml в проекте и добавляем в него плагин:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ru.test</groupId> <artifactId>testProject</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <build> <plugins> ... другие плагины <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://localhost:8080/manager/text</url> <server>TomcatServer</server> <path>/educationProject</path> </configuration> </plugin> ... другие модули </plugins> </build> </project>
В разделе configuration указываем:
url – адрес, где запущен Tomcat и путь к manager/text
server – id сервера из файла settings.xml
path – адрес, по которому будет доступно развертываемое приложение
4. Развертывание приложения
Для развертывания приложения выполняем команду mvn tomcat7:deploy. Пример вывода:
> $ mvn tomcat7:deploy [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for ru.datatech:testProject:war:1.0-SNAPSHOT [WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-plugin is missing. @ line 14, column 21 [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. [WARNING] [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building testProject 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> tomcat7-maven-plugin:2.2:deploy (default-cli) > package @ testProject >>> [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testProject --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testProject --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ testProject --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /Users/abarmin/IdeaProjects/educationProject/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ testProject --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ testProject --- [INFO] No tests to run. [INFO] [INFO] --- maven-war-plugin:2.2:war (default-war) @ testProject --- [INFO] Packaging webapp [INFO] Assembling webapp [testProject] in [/Users/abarmin/IdeaProjects/educationProject/target/testProject-1.0-SNAPSHOT] [INFO] Processing war project [INFO] Copying webapp resources [/Users/abarmin/IdeaProjects/educationProject/src/main/webapp] [INFO] Webapp assembled in [29 msecs] [INFO] Building war: /Users/abarmin/IdeaProjects/educationProject/target/testProject-1.0-SNAPSHOT.war [INFO] WEB-INF/web.xml already added, skipping [INFO] [INFO] <<< tomcat7-maven-plugin:2.2:deploy (default-cli) < package @ testProject <<< [INFO] [INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ testProject --- [INFO] Deploying war to http://localhost:8080/educationProject Uploading: http://localhost:8080/manager/text/deploy?path=%2FeducationProject Uploaded: http://localhost:8080/manager/text/deploy?path=%2FeducationProject (3 KB at 2329.1 KB/sec) [INFO] tomcatManager status code:200, ReasonPhrase: [INFO] OK - Deployed application at context path /educationProject [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.713 s [INFO] Finished at: 2016-01-30T20:57:08+05:00 [INFO] Final Memory: 15M/206M [INFO] ------------------------------------------------------------------------
Для повторного разворачивания следует использовать mvn tomcat7:redeploy, а для удаления приложения mvn tomcat7:undeploy