`
crabdave
  • 浏览: 1302252 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Maven cargo 远程自动部署war

 
阅读更多

Maven cargo 远程自动部署war

 

        如果不使用maven构建项目,则可以直接考虑将war包直接通过cargo远程部署到远端服务器上

(也就是说先创建个maven项目,打好包,再通过shell脚本,将所需要的项目打成war包,放到target目录下,对war包进行覆盖)。

 

打war包:

cd 项目目录,即WEB-INF所在目录

jar -cfM0 /app/proj-1.0-SNAPSHOT.war ./

 

1、创建maven项目

 

mvn archetype:generate

 

2、在pom.xml中配置maven-war-plugin和cargo-maven2-plugin

 

<build>
	<plugins> 
	
        <plugin>  
            <groupId>org.codehaus.cargo</groupId>  
            <artifactId>cargo-maven2-plugin</artifactId>  
            <version>1.4.9</version>  
            <configuration>  
                <container>  
                    <containerId>tomcat5x</containerId>  
                    <type>remote</type>  
                </container>  
                <configuration>  
                    <type>runtime</type>  
                    <properties>  
                        <cargo.remote.uri>http://你的IP:8080/manager</cargo.remote.uri>  
                        <cargo.remote.username>admin</cargo.remote.username>  
                        <cargo.remote.password>admin</cargo.remote.password>  
                    </properties>  
                </configuration> 
				<deployables>  
				   <deployable>            
					<groupId>${project.groupId}</groupId>    
					<artifactId>${project.artifactId}</artifactId>    
					<type>war</type>    
					<properties>    
						<!-- 使用根路径,作为上下文 --> 
						<context>/</context>  
					</properties>    
					<!-- 可选:验证是否部署成功 -->  
					<pingURL>http://你的IP:8080</pingURL>  
					<!-- 可选:验证超时时间,默认是120000 毫秒-->  
					<pingTimeout>60000</pingTimeout>  
                   </deployable>  
                </deployables>  
            </configuration>  
        </plugin> 
<!--  本地部署
		<plugin>  
            <groupId>org.codehaus.cargo</groupId>  
            <artifactId>cargo-maven2-plugin</artifactId>  
            <version>1.4.0</version>  
            <configuration>  
                <container>  
                        <containerId>tomcat5x</containerId>  
                        <home>D:\Tomcat5.5</home>  
                </container>  
                <configuration>  
                    <type>existing</type>  
                    <home>D:\Tomcat5.5</home>  
                </configuration>    
            </configuration>  
        </plugin>  
-->
		<plugin>  
			<groupId>org.apache.maven.plugins</groupId>  
		    <artifactId>maven-war-plugin</artifactId>  
			<version>2.2</version> 
			<configuration>  
				<webXml>src\webapps\WEB-INF\web.xml</webXml>  
			</configuration>  
		</plugin>  
    </plugins>
</build>

</project>

 3、修改tomcat配置

Tomcat5.5\conf\server.xml

 

       <Host

          appBase="webapps"

          name="localhost">

           <!--上面cargo进行部署时使用的根路径,这里就不要配置了-->

          <!--  Context path="" docBase="app" debug="0" reloadable="false" crossContext="true"/-->

<!--配置tomcat的manager  http://localhost:8080/manager/html-->

          <Context path="/manager" docBase="/app/Tomcat5.5/server/webapps/manager" debug="0" privileged="true"/>

       </Host>

 

Tomcat5.5\conf\tomcat-users.xml   添加

<role rolename="admin"/>

<user username="admin" password="admin" roles="admin,manager"/>

 

Tomcat8 则使用

<role rolename="admin"/>

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

相关权限都可以在/webapps/manager/WEB-INFO/web.xml里找到

发布主要使用manager-script权限,界面的展示主要使用manager-gui权限

访问的地址:http://你的IP:你的端口/manager/

 

同时POM中的配置也需要调整:

<containerId>tomcat8x</containerId>  

<cargo.remote.uri>http://127.0.0.1:8080/manager/text</cargo.remote.uri>

 

 

 <configuration>    
                <container>    
                    <containerId>tomcat8x</containerId>    
                    <type>remote</type>    
					<timeout>120000</timeout>
                </container>    
                <configuration>    
                    <type>runtime</type>    
                    <properties>    
                        <cargo.remote.uri>http://127.0.0.1:8080/manager/text</cargo.remote.uri>
                        <cargo.remote.username>admin</cargo.remote.username>    
                        <cargo.remote.password>admin</cargo.remote.password>    
                    </properties>    
                </configuration>   
 
对于上传的war包过大的问题,也可以进行一些配置/webapps/manager/WEB-INFO/web.xml

 

    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>-1</max-file-size>
      <max-request-size>-1</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>

 改成-1不再受限制,默认的是50M

 

出现这个错误时需要修改如下文件

org.apache.catalina.servlets.InvokerServlet is privileged and cannot be loaded by this web application.

Tomcat5.5\conf\context.xml

<Context>替换成<Context reloadable="true" privileged="true">

 

4、启动Tomcat

 

5、进入项目目录,即pom.xml文件所在目录 

mvn clean install package

mvn cargo:deploy 或者 mvn cargo:redeploy 或者 mvn cargo:undeploy

查看日志信息可以加 -X  例如:mvn cargo:deploy -X

 

 注意:

如果是发布在根路径,即使用http://你的IP:你的端口/

需要把webapps/ROOT 删除,以避免冲突

 

 

分享到:
评论

相关推荐

    maven cargo自动化部署tomcat7.pdf

    要实现Cargo对Tomcat7的远程部署,需要对Tomcat的conf/tomcat-users.xml文件进行配置。添加具有管理权限的角色(manager、admin等),并创建具有相应角色的用户。这是为了确保当使用Cargo插件远程访问Tomcat服务器...

    cargo远程部署web项目资料

    在这个"cargo远程部署web项目资料"中,我们将会探讨如何利用Cargo和Maven来实现远程Web项目的自动化部署。 1. **Cargo简介** Cargo是由Codehaus组织开发的工具,它提供了一种统一的方式来管理Java应用服务器,支持...

    cargo实现自动化部署远程jetty容器(非安全模式)

    ### cargo实现自动化部署远程jetty容器(非安全模式) #### 一、准备工作 在开始部署之前,我们需要确保已经具备以下条件: 1. **WAR包**:`DeployerWebapplicationfortheJettyremotecontainers`,该WAR包是部署到...

    tomcat7,8,maven

    - **Cargo插件**:Cargo提供更灵活的容器管理,包括远程部署到生产环境的Tomcat服务器。 5. **Maven生命周期与构建过程**: - **clean**:清理项目目标目录,如target。 - **compile**:编译源代码为字节码。 -...

    Jenkins+Maven+svn+Tomcat入门文档

    Cargo插件是一个Maven插件,可以用于自动化部署Web应用程序到各种Web容器中,如Tomcat、Jetty等。 **使用WebLogicMavenPlugin插件自动化部署weblogic** WebLogicMavenPlugin插件用于自动化部署Web应用程序到Oracle...

    gradle-cargo-plugin:Gradle插件,可通过Cargo为本地和远程容器提供部署功能

    Gradle Cargo Plugin是一款强大的构建工具Gradle的插件,它集成了Cargo库,使得开发者能够方便地对Web应用程序进行本地和远程的部署操作。Cargo是一款非常实用的Java应用部署工具,支持多种应用服务器,如Tomcat、...

    deploy.rar

    总的来说,"deploy.rar"中的插件是基于Cargo的Java项目部署解决方案,它为开发者提供了一种高效、可靠的远程部署工具。通过集成到构建工具或Jenkins等CI/CD系统中,它可以极大地提高开发团队的工作效率,降低部署...

    Java Power Tools

    Ant可通过`scp`、`ftp`等网络传输方式实现远程部署,或者利用特定插件完成容器部署等工作。 **1.10 启动构建脚本** 有时,为了简化构建过程,开发者需要在构建脚本中加入引导逻辑。这部分内容将指导如何实现这一...

Global site tag (gtag.js) - Google Analytics