eclipse-tomcat部署maven项目方式之四

来源:互联网 发布:淘宝分期付款额度 编辑:程序博客网 时间:2024/05/16 05:35

现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可以部署在Jetty服务器上,以下是调试过程。

一.开发环境

Java: JDK7

Eclipse: Eclipse Java EE IDE for Web Developers ,Version:Luna Release (4.4.0)

Maven: 3.2.5

Tomcat: 7

二. 配置Tomcat用户

   Tomcat7和8的配置用户权限是一样的,更多可以参考官方文档(http://tomcat.apache.org/)的说明。此外配置独立服务器还要修改Tomcat的tomcat-user.xml文件,把用户权限加进去。

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

  其中manager-gui和admin-gui是Tomcat的管理界面,manager-script指的就是maven插件可以访问的用户权限规则

三. 在pom.xml文件中添加Tomcat插件

  Tomcat7可以参考在官方文档(http://tomcat.apache.org/maven-plugin-2.2/)中关于maven插件的配置。

复制代码
 1 <build> 2          3         <pluginManagement> 4             <plugins> 5                 <plugin> 6                     <groupId>org.apache.maven.plugins</groupId> 7                     <artifactId>maven-war-plugin</artifactId> 8                     <version>2.1.1</version> 9                     <configuration>10                         <webXml>src/main/webapp/WEB-INF/web.xml</webXml>11                     </configuration>12                 </plugin>13 14                 <plugin>15                     <groupId>org.apache.tomcat.maven</groupId>16                     <artifactId>tomcat7-maven-plugin</artifactId>17                     <version>2.2</version>18                     <configuration>19                         <url>http://localhost:8080/xpxiaowuApp/</url>20                         <username>admin</username>21                         <password>admin</password>22                     </configuration>23                 </plugin>24                 25             </plugins>26         </pluginManagement>27 28     </build>
复制代码

 在第19行,Web App在Tomcat中的部署地址。

三.运行Tomcat7的Maven插件

以上步骤配置好后,在命令行输入命令:

mvn tomcat7:run

如果一切顺利,会出现一下提示。

复制代码
D:\workspace_maven>mvn tomcat7:run[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building xpxiaowuApp 0.0.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] >>> tomcat7-maven-plugin:2.2:run (default-cli) > process-classes @ xpxiaowuApp >>>[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xpxiaowuApp ---[WARNING] Using platform encoding (GBK 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) @ xpxiaowuApp ---[INFO] Nothing to compile - all classes are up to date[INFO][INFO] <<< tomcat7-maven-plugin:2.2:run (default-cli) < process-classes @ xpxiaowuApp <<<[INFO][INFO] --- tomcat7-maven-plugin:2.2:run (default-cli) @ xpxiaowuApp ---[INFO] Running war on http://localhost:8080/xpxiaowuApp[INFO] Using existing Tomcat server configuration at D:\workspace_maven\target\tomcat[INFO] create webapp with contextPath: /xpxiaowuApp五月 27, 2015 9:17:12 下午 org.apache.coyote.AbstractProtocol init信息: Initializing ProtocolHandler ["http-bio-8080"]五月 27, 2015 9:17:12 下午 org.apache.catalina.core.StandardService startInternal信息: Starting service Tomcat五月 27, 2015 9:17:12 下午 org.apache.catalina.core.StandardEngine startInternal信息: Starting Servlet Engine: Apache Tomcat/7.0.47五月 27, 2015 9:17:13 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["http-bio-8080"]
复制代码

  在浏览器中输入 http://localhost:8080/xpxiaowuApp/ ,可以看到欢迎页面。

 

注意: 实验证明以上步骤在Tomcat8中同样配置成功。

 

四. 在pom.xml文件中添加Jetty6插件

1 Jetty可以参考官方文档( http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html)

1 <plugin>2   <groupId>org.eclipse.jetty</groupId>3   <artifactId>jetty-maven-plugin</artifactId>4  5 </plugin>

   以上步骤配置好后,在命令行输入命令:

mvn jetty:run

 在浏览器输入 http://127.0.0.1:8080/xpxiaowuApp/index.html 就可以访问项目了。

 2 设置(修改)jetty(maven插件maven-jetty-plugi)的端口 ,例如下面的配置文档。

复制代码
<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>com.xinping</groupId>      <artifactId>TestWeb</artifactId>      <version>0.0.1-SNAPSHOT</version>      <packaging>war</packaging>        <!-- 为整个项目统一指定字符集 -->     <properties>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>     </properties>      <build>         <!-- 打包的war名称设置 -->         <finalName>TestWeb</finalName>          <pluginManagement>             <plugins>                                  <plugin>                     <groupId>org.mortbay.jetty</groupId>                     <artifactId>maven-jetty-plugin</artifactId>                                                   <configuration>                                        <scanIntervalSeconds>3</scanIntervalSeconds>                           <connectors>                               <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">                                   <port>8080</port>                               </connector>                           </connectors>                                                                 </configuration>                               </plugin>                              </plugins>         </pluginManagement>     </build>  </project>
复制代码

 

注意:maven集成jetty插件后会出现问题

1  现象
运行 mvn jetty:run 以后,发现静态资源文件修改后无法保存,IDE 提示 “请求的操作无法在使用用户映射区域打开的文件上执行”。

解决方案:

版本:jetty 6.1.22

找到 .m2\repository\org\mortbay\jetty\jetty\6.1.22 修改 jetty-6.1.22.jar 中 org/mortbay/jetty/webapp/webdefault.xml 文件

修改

<init-param>      <param-name>useFileMappedBuffer</param-name>      <param-value>true</param-value></init-param> 

<init-param>      <param-name>useFileMappedBuffer</param-name>      <param-value>false</param-value></init-param> 

然后放到 maven工程的 src/main/resources下,修改配置文件:

复制代码
    <build>        <finalName>javaWebPro</finalName>        <pluginManagement>            <plugins>                <plugin>                    <groupId>org.mortbay.jetty</groupId>                    <artifactId>maven-jetty-plugin</artifactId>                                                 <configuration>                                       <scanIntervalSeconds>3</scanIntervalSeconds>                          <connectors>                              <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">                                  <port>8080</port>                              </connector>                          </connectors>                                            <webAppConfig>                          <defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>                        </webAppConfig>                       </configuration>                              </plugin>                            </plugins>        </pluginManagement>    </build>
复制代码

五 在Eclipse运行Maven命令

在 Eclipse中点击Maven的Web项目,右键选择Run As => Maven Build

在配置窗口中Goals列中填写Maven命令: jetty:run , 保存配置,然后运行这个配置。

此时查看Eclipse的console控制台,会给出以下提示信息:

六 配置插件仓库

复制代码
<!-- 配置插件仓库 -->    <repositories>         <!-- restlet 插件仓库 -->     <repository>            <id>maven-restlet</id>            <name>Public online Restlet repository</name>            <url>http://maven.restlet.org</url>        </repository>               <repository>            <id>maven2-repository.java.net</id>            <name>Java.net Repository for Maven</name>            <url>http://download.java.net/maven/2/</url>        </repository>                <repository>            <id>oschina Releases</id>            <name>oschina Releases</name>            <url>http://maven.oschina.net/content/groups/public</url>        </repository>        <repository>            <id>nexus-osc</id>            <name>Nexus osc</name>            <url>http://maven.oschina.net/content/groups/public/</url>        </repository>        <repository>            <id>nexus-osc-thirdparty</id>            <name>thirdparty</name>            <url>http://maven.oschina.net/content/repositories/thirdparty/</url>        </repository>        <!-- jesery插件仓库 -->        <repository>            <id>snapshot-repository.java.net</id>            <name>Java.net Snapshot Repository for Maven</name>            <url>https://maven.java.net/content/repositories/snapshots/</url>            <layout>default</layout>        </repository>    </repositories>    
复制代码
原创粉丝点击