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首先从指定位置下载这些插件.