Cargo Gradle 插件, 快速部署WEB项目

Cargo是一个用于Java WEB项目的部署工具, 能够将项目部署到各种容器中, 目前支持Tomcat, JBoss, Jetty以及常见的WEB容器.

Cargo可以从各种build工具中调用, 例如Maven, Ant, 以插件的形式存在. 今天我们要介绍的是用于Gradle中的插件. 该项目托管在GitHub上面. gradle cargo plugin

以下命令签出该项目

git clone https://github.com/bmuschko/gradle-cargo-plugin.git

以下是一个Spring项目的build.gradle, 使用cargo来部署项目.

apply plugin'base'
apply plugin'java'
apply plugin'war'
apply plugin'jetty'
apply plugin'tomcat'
apply plugin'cargo'

ext.tomcatVersion '7.0.29'
ext.cargoVersion '1.1.3'

buildscript {
    // 导入cargo插件
    repositories {
        add(new org.apache.ivy.plugins.resolver.URLResolver()) {
            name 'GitHub'
            addArtifactPattern 'http://cloud.github.com/downloads/[organisation]/[module]/[module]-[revision].[ext]'
        }
    }

    dependencies 
        classpath 'bmuschko:gradle-tomcat-plugin:0.9.3' 
        classpath 'bmuschko:gradle-cargo-plugin:0.5.4'
   }
}



repositories {

    mavenCentral()
    
    mavenRepo url'http://maven.springframework.org/release'
    mavenRepo url'http://maven.springframework.org/snapshot'
    mavenRepo url'http://maven.springframework.org/milestone'
    mavenRepo url'https://repository.jboss.org/nexus/content/repositories/releases/'
    mavenRepo url'http://download.java.net/maven/glassfish/org/glassfish/'

}

dependencies {


   providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
   compile 'org.springframework:spring-webmvc:3.2.2.RELEASE'
   runtime "jstl:jstl:1.2"
   
   tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}""org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
   tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
       exclude group'org.eclipse.jdt.core.compiler'module'ecj'
       cargo "org.codehaus.cargo:cargo-core-uberjar:${cargoVersion}",  "org.codehaus.cargo:cargo-ant:${cargoVersion}"
   }
   
   
        

}

// 配置cargo convention
cargo {
    containerId 'tomcat7x'
    port 8080

    local {
        homeDir file('D:/Java/apache-tomcat-7.0.26')
        output file('D:/Java/apache-tomcat-7.0.26/output.log')
    }
}

war {   
    version '' 
 }

这个插件本身几乎没有提供任何功能, 他所作的事情就是利用Gradle中的Ant接口调用Cargo的Ant插件来完成任务. 项目的主要内容是提供接口, 使你可以通过Gradle的方式来配置和调用Ant任务.

部署并运行项目, 执行"gradle cargoRunLocal" 即可.

buildscript中的repository和dependency是用于gradle脚本本身的, 比如这个脚本用到了cargo插件, 但是gradle有没有内置该插件, 则必须在buildscript闭包中配置该插件的来源, 构建项目的时候gradle首先从指定位置下载这些插件.