Eclipse下maven部署web项目到tomcat7(兼容tomcat8)

9/6/2015来源:Java教程人气:1908

Eclipse下maven部署web项目到tomcat7(兼容tomcat8)

1.下载tomcat7并配置好java_HOME,tomcat7\webapps目录除了manager之外,其它都可以删除(删除没用的,可加速tomcat的启动).

2.新建系统变量CATALINA_HOME,值为:C:\opensource\tomcat-7.0.34,在系统变量Path的最后面添加%CATALINA_HOME%\lib; %CATALINA_HOME%\lib\servlet-api.jar;%CATALINA_HOME%\lib\jsp-api.jar注意它们之间的分号,一定是英文的分号。

3.tomcat7\conf\tomcat-users.xml加入

    <role rolename="admin-gui" />    <role rolename="manager-gui" />    <role rolename="manager-script"/>    <user username="admin" passWord="eteda" roles="admin-gui,manager-gui,manager-script"/>

当然用户名和密码可以不一样,但没有manager-gui就不能通过浏览器去访问manage应用,没有manager-script就不能通过manage去上传war包达到部署的目的.

3.配置maven的setting.xml

修改%MAVEN_HOME%\conf\setting.xml(前提是在myeclipse PReferences中maven启用本地安装版本并设置用户setting.xml为本地conf下的setting.xml)。

在<servers>标签中加入

<server>        <id>tomcat7</id>        <username>admin</username>        <password>admin</password> </server>

注意这里用户名、密码必须为manager-gui角色的用户,这里设置需要与之前tomcat配置时的角色分配对应起来。

4.在web项目的pom.xml的一个应用例子(注:url也必须有/text,否则也上传不了war包)

<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/maven-v4_0_0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.test</groupId>    <artifactId>testweb</artifactId>    <packaging>war</packaging>    <version>1.0</version>    <name>testweb Maven Webapp</name>    <url>http://maven.apache.org</url>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.deploy>deploy</project.deploy>        <project.tomcat.version>8.0.0-RC5</project.tomcat.version>    </properties>    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.1</version>                <configuration>                    <source>1.7</source>                    <target>1.7</target>                </configuration>            </plugin><!--             <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-resources-plugin</artifactId>                <version>2.6</version>                <executions>                    <execution>                        <id>copy-resources</id>                        <phase>process-resources</phase>                        <goals>                            <goal>resources</goal>                        </goals>                        <configuration>                            <encoding>UTF-8</encoding>                            <outputDirectory>${project.build.directory}/${project.deploy}</outputDirectory>                            <resources>                                <resource>                                    <directory>src/main/resources/</directory>                                    <includes>                                        <include>*.xml</include>                                    </includes>                                </resource>                            </resources>                        </configuration>                    </execution>                </executions>            </plugin>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-jar-plugin</artifactId>                <version>2.3.2</version>                <configuration>                    <archive>                        <addMavenDescriptor>false</addMavenDescriptor>                    </archive>                    <outputDirectory>${project.build.directory}/${project.deploy}</outputDirectory>                </configuration>                <executions>                    <execution>                        <phase>process-classes</phase>                        <goals>                            <goal>jar</goal>                        </goals>                        <configuration>                            <excludes>                                <exclude>*.properties</exclude>                            </excludes>                        </configuration>                    </execution>                </executions>            </plugin> -->            <plugin>                <groupId>org.apache.tomcat.maven</groupId>                <artifactId>tomcat7-maven-plugin</artifactId>                <version>2.2</version>                <configuration>                    <url>http://localhost:8080/manager/text</url>                    <username>username</username>                    <password>password</password>                    <path>/${project.artifactId}</path>                </configuration>            </plugin>        </plugins>    </build>    <dependencies>        <dependency>            <groupId>org.apache.tomcat</groupId>            <artifactId>tomcat-servlet-api</artifactId>            <version>${project.tomcat.version}</version>            <scope>provided</scope>        </dependency>    </dependencies></project>

5.tomcat7要先启动,在命令行转到项目目录下输入d:\maven3\bin\mvn tomcat7:deploy看结果.(注:不是tomcat:deploy)

在eclipse配置好外部的maven,在eclipse的run configurations建一个Maven Build:Name随便起一个名字(如tomcat7_redeploy),Base directory选项目目录${workspace_loc:/testweb},goals填tomcat7:deploy.或tomcat7:redeploy

deploy:如果已经部署过,再deploy就会失败.去tomcat7的webapps删除已经部署过的就行了.

6.五个必须掌握的maven命令

1). mvn help:describe 你是否因为记不清某个插件有哪些goal而痛苦过,你是否因为想不起某个goal有哪些参数而苦恼,那就试试这个命令吧,它会告诉你一切的. 参数: 1. -Dplugin=pluginName 2. -Dgoal(或-Dmojo)=goalName:与-Dplugin一起使用,它会列出某个插件的goal信息,如果嫌不够详细,同样可以加-Ddetail.(注:一个插件goal也被认为是一个 “Mojo”) 下面大家就运行mvn help:describe -Dplugin=help -Dmojo=describe感受一下吧!

2). mvn archetype:generate 你是怎么创建你的maven项目的?是不是像这样:mvn archetype:create -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.ryanote -Dartifact=common,如果你还再用的话,那你就out了,现代人都用mvn archetype:generate了,它将创建项目这件枯燥的事更加人性化,你再也不需要记那么多的archetypeArtifactId,你只需输入archetype:generate,剩下的就是做”选择题”了.

3). mvn tomcat:run 用了maven后,你再也不需要用eclipse里的tomcat来运行web项目(实际工作中经常会发现用它会出现不同步更新的情况),只需在对应目录(如/ryanote)里运行 mvn tomat:run命令,然后就可在浏览器里运行http://localhost:8080/ryanote查看了.如果你想要更多的定制,可以在pom.xml文件里加下面配置: 01 02 03 04 org.codehaus.mojo 05 tomcat-maven-plugin 06 07 /web 08 9090 09 10 11 12 当然你也可以在命令里加参数来实现特定的功能,下面几个比较常用: 1. 跳过测试:-Dmaven.test.skip(=true) 2. 指定端口:-Dmaven.tomcat.port=9090 3. 忽略测试失败:-Dmaven.test.failure.ignore=true 当然,如果你的其它关联项目有过更新的话,一定要在项目根目录下运行mvn clean install来执行更新,再运行mvn tomcat:run使改动生效.

4). mvnDebug tomcat:run 这条命令主要用来远程测试,它会监听远程测试用的8000端口,在eclipse里打开远程测试后,它就会跑起来了,设断点,调试,一切都是这么简单.上面提到的那几个参数在这里同样适用.

5). mvn dependency:sources 故名思义,有了它,你就不用到处找源码了,运行一下,你项目里所依赖的jar包的源码就都有了

下面介绍几个常用的Goal

命令描述
tomcat:deploy部署一个web war包
tomcat:reload重新加载web war包

tomcat:start

启动tomcat

tomcat:stop

停止tomcat

tomcat:undeploy

停止一个war包
tomcat:run启动嵌入式tomcat ,并运行当前项目