maven部署web应用的两种方式

本文介绍使用Jetty和Cargo Maven插件两种方式来自动化部署Web应用的方法。通过Jetty插件,可以在本地快速启动并自动更新Web应用;而Cargo插件则支持将应用部署到Tomcat等容器中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种方式:使用jetty-maven-plugin插件部署web应用

首先 配置maven的conf目录下的settings.xml文件

在其中配置:

 <pluginGroups>
   
	<pluginGroup>org.mortbay.jetty</pluginGroup>
   
  </pluginGroups>

因为此插件不是官方插件,如果不配置,默认是搜"org.apache.maven.plugins" and "org.codehaus.mojo",所以配置此插件的groupId,这样就可以使用简化的前缀去调用了,例如mvn jetty:run


pom.xml文件中配置:

 <plugin>
    	<groupId>org.mortbay.jetty</groupId>
    	<artifactId>jetty-maven-plugin</artifactId>
    	<version>7.1.6.v20100715</version>
    	<configuration>
    		<scanIntervalSeconds>10</scanIntervalSeconds>
	    	<webAppConfig>
	    		<contextPath>/test</contextPath>
	    	</webAppConfig>
    	</configuration>
    	</plugin> 

配置完成后 ,通过命令:mvn jetty:run 就可以启动应用了,scanIntervalSeconds配置每10miao扫描一次,如果修改了jsp html css js java类,插件都会自动更新修改内容到应用中去。

默认端口8080,如果需要更改端口可以使用命令mvn jetty:run  -Djetty.port =8099

启动成功后就可以通过 http://localhost:8099/test 访问应用了。


第二种部署方法

通过cargo.maven2.plugin插件实现自动化部署

部署到本地:

配置pom.xml

 <plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.1.3</version>
    <configuration>
    <!-- Container configuration -->
    <container>
        <containerId>tomcat7x</containerId>
        <home>F:\apache-tomcat-7.0.65</home>
    </container>
    <configuration>
        <type>standalone</type>
        <home>${project.build.directory}/tomcat7x</home>
        <properties>
            <cargo.host>localhost</cargo.host>
            <cargo.servlet.port>8080</cargo.servlet.port>
        </properties>
    </configuration>
    </configuration>
</plugin>
配置settings.xml

跟第一种是一样的道理,增加

  <pluginGroups>
	
	<pluginGroup>org.codehaus.cargo</pluginGroup>
  </pluginGroups>

现在可以通过命令启动了

mvn clean package cargo:run

这种部署方式关键是在

 <configuration>
        <type>standalone</type>    

        <home>${project.build.directory}/tomcat7x</home>
        <properties>
            <cargo.host>localhost</cargo.host>
            <cargo.servlet.port>8080</cargo.servlet.port>
        </properties>
    </configuration>  

配置成standalone, 会将tomcat拷贝至${project.build.directory} 即target的tomcat7x目录下  可以修改成existing 并将home修改为tomcat的目录 跟<container>中配置的一样F:\apache-tomcat-7.0.65 ,这种方式就会直接在tomcat目下部署,而不会拷贝 详细配置见下屏

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.1.3</version>
    <configuration>
    <!-- Container configuration -->
    <container>
        <containerId>tomcat7x</containerId>
        <home>F:\apache-tomcat-7.0.65</home>
    </container>
    <configuration>
        <type>existing</type>
        <home>F:\apache-tomcat-7.0.65</home>
    </configuration>
    </configuration>
</plugin>


注意:启动命令run可以用start, 如mvn clean package cargo:start

只不过此时你会看到编译成功会失败BUILD success 或者build fail ,却不能访问页面进行测试,测试的话还得用run。

上述命令中的clean是清除上次的部署,package是打成war包 ,如果直接这样mvn cargo:run 会报

Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.1.3:run (default-cli) on project jettyplugin: Execution default-cli of goal org.codehaus.cargo:cargo-maven2-plugin:1.1.3:run failed: Failed to create deployable with implementation class org.codehaus.cargo.container.tomcat.TomcatWAR for the parameters (container [id = [tomcat7x]], deployable type [war]). InvocationTargetException: Failed to parse Tomcat WAR file in [F:\workSpace\jettyplugin\target\jettyplugin.war]: Failed to find file [F:\workSpace\jettyplugin\target\jettyplugin.war]: F:\workSpace\jettyplugin\target\jettyplugin.war (系统找不到指定的文件。) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

所以 在命令中加入了打包的命令package ,cargo官网上是用的verify ,都是default声明周期中的一个阶段,命令如下

mvn clean verify org.codehaus.cargo:cargo-maven2-plugin:run

//CARGO can be directly run on any existing Maven2 Java EE project (WAR, EAR or other) by running: 此命令就无需配置pom.xml和settings.xml了

<think>好的,我现在需要帮助用户解决关于如何在Maven Java Web项目中实现两种部署方法的问题。首先,我需要回顾用户提供的引用内容,尤其是引用[1]、[2]和[3],看看是否有相关的部署方法信息。 引用[1]提到了Maven项目处理工件下载的任务,可能与依赖管理有关,但直接相关的部署信息不多。引用[2]指出项目已准备好部署,并附属于Eclipse的Tomcat服务器插件启动,这可能涉及使用Maven插件部署到嵌入式Tomcat或外部Tomcat。引用[3]讨论JAX-RS注解,可能与Web服务配置有关,但和部署方法关联不大。 接下来,我需要确定用户所需的两种部署方法。通常,Maven Java Web项目的部署方式包括:1)打包成WAR文件并部署到外部服务器;2)使用嵌入式服务器运行。或者,另一种可能是通过Maven插件直接部署到Tomcat,以及生成可执行的WAR包。 检查引用[2]提到的Eclipse的Tomcat插件,这可能对应第一种方法,即生成WAR文件并手动部署到Tomcat。第二种方法可能是使用Maven Tomcat插件(tomcat7-maven-plugin)进行热部署,或者使用Spring Boot内嵌Tomcat。 需要确保两种方法都通过Maven配置实现。第一种方法通常涉及maven-war-plugin打包,第二种可能使用tomcat7-maven-plugin或spring-boot-maven-plugin。 然后,我需要详细写出这两种方法的步骤,包括pom.xml的配置示例和操作命令。例如,方法一:配置packaging为war,运行mvn package生成WAR,然后手动复制到Tomcat的webapps目录。方法二:配置tomcat7-maven-plugin,通过mvn tomcat7:deploy直接部署到运行的Tomcat实例。 同时,要确保回答结构清晰,分步骤说明,并验证每个步骤的正确性。可能还需要提醒用户关于Tomcat管理器应用的配置,如manager-script角色的用户设置,以便插件能够部署。 最后,生成相关问题,例如Maven多环境配置、自动化部署等,以帮助用户进一步探索。</think>### Maven Java Web项目两种部署方法 #### 方法一:WAR包手动部署(传统方式) 1. **配置`pom.xml`文件** 在`<packaging>`标签中声明为`war`格式,并添加`maven-war-plugin`插件: ```xml <packaging>war</packaging> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build> ``` 2. **生成WAR文件** 执行命令: ```bash mvn clean package ``` 生成的`target/*.war`文件可直接部署到Tomcat的`webapps`目录,Tomcat会自动解压并加载应用[^2] 3. **部署验证** 访问`http://localhost:8080/项目名/`即可验证部署结果 #### 方法二:Maven插件部署(自动化方式) 1. **配置Tomcat插件** 在`pom.xml`中添加`tomcat7-maven-plugin`: ```xml <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>admin</username> <password>tomcat_password</password> </configuration> </plugin> ``` 2. **执行热部署命令** - 首次部署:`mvn tomcat7:deploy` - 更新部署:`mvn tomcat7:redeploy` - 停止服务:`mvn tomcat7:undeploy` 3. **注意事项** - 需在Tomcat的`conf/tomcat-users.xml`中添加权限: ```xml <role rolename="manager-script"/> <user username="admin" password="tomcat_password" roles="manager-script"/> ``` - Tomcat服务需提前启动 #### 对比说明 | 方法 | 优势 | 适用场景 | |----------|------------------------|--------------------| | WAR包部署 | 部署包可移植性强 | 生产环境、多服务器部署 | | 插件部署 | 开发调试效率高,支持自动化持续集成 | 开发测试环境、快速迭代 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值