Baidu 云服务Gradle 插件

作者:Rui 发布时间:March 11, 2016 分类:JAVA,BIGDATA 浏览:547

基于Gradle 开发的便于开发基于Baidu云服务的程序,插件采用Gradle Rule Base Model 形式开发

Baidu 云服务Gradle 插件支持 发布文件到OSS 和创建百度Hadoop集群并执行 Map-Reduce程序

使用示例代码:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.org.rapid.develop:baidu-cloud-plugin:1.1"
  }
}

apply plugin: "org.rapid.develop.baidu-cloud-plugin"

model {
    baidu {
        accessKey = 'accessKey'
        secretKey = 'secretKey'
        // OSS 上传设置
        // 上传 文件到指定的bucketName
        ossPublish {
            bucketName = 'bucketName'
            files = [jar.archivePath, new File('../logs/accesslog-10k.log')]
        }
        // MapReduce 设置
        // 可创建Baidu Hadoop集群,并添加应用,并执行任务
        // 可执行多个任务
        mapReduce {
            name = project.name
            imageType = 'hadoop'
            imageVersion = '0.1.0'
            autoTerminate = false
            logUri = "bos://$bucketName/logs/"
            master {
                instanceType = 'g.small'
                instanceCount = 1
            }
            slaves.create {
                instanceType = 'g.small'
                instanceCount = 2
            }
            steps.create {
                name = "$project.name-$project.version"
                actionOnFailure = 'Continue'
                mainClass = 'com.vianet.cie.hadoop.AccessLogAnalyzer'
                jar = "bos://$bucketName/$project.group/$project.version/$project.name-${project.version}.jar"
                arguments = "bos://$bucketName/$project.group/$project.version/accesslog-10k.log bos://$bucketName/out"
            }
        }
    }
}

源码地址:
https://github.com/baidu-cloud-plugin/baidu-cloud-plugin.git

插件地址:
https://plugins.gradle.org/plugin/org.rapid.develop.baidu-cloud-plugin

Using Gradle to pack your java application as a fat jar

作者:Rui 发布时间:March 4, 2016 分类:JAVA,ANDROID 浏览:524

使用Gradle 将应用程序和依赖包打包到一个JAR内

jar {
    from {
        fileTree(dir: 'libs', include: '*.jar').collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
}

Gradle 使用OSChina Maven 仓库

作者:Rui 发布时间:February 29, 2016 分类:JAVA,ANDROID 浏览:1,995

国内使用Maven官方仓库速度很慢,切换到国内镜像或者公司私服会提速很多。

修改项目根目录下的build.gradle,将所有的jcenter() 和mavenCentral() 全部替换成

allprojects {
    repositories {
        maven{ url 'http://maven.oschina.net/content/groups/public/'}
    }
}

如果项目多,可修改全局配置,将所有使用gradle的项目自动换成国内的镜像。

将下面这段Copy到名为init.gradle文件中,并保存到 USER_HOME/.gradle/文件夹下即可

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.oschina.net/content/groups/public'
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

init.gradle文件其实是Gradle的初始化脚本(Initialization Scripts),也是运行时的全局配置。
更详细的介绍请参阅 http://gradle.org/docs/current/userguide/init_scripts.html

Reference


Dependency Management
Change Gradle mavenCentral URL to My repo
What is included in JCenter repository in Gradle?

Typecho 插件:阿里云文件存储插件

作者:Rui 发布时间:February 27, 2016 分类:WEB 浏览:640

Typecho 阿里云文件存储插件

AliyunOSS.zip

Use AMQP with Microsoft Azure Service Bus Queue (Old)

作者:Rui 发布时间:February 24, 2016 分类:JAVA,Azure,CLOUD 浏览:1,973

Microsoft Azure Service Bus 是微软提供的消息服务总线云服务,支持消息队列, 主题订阅,点对点消息, Event Hubs功能。类似于JAVA的ActiveMQ的功能, Service Bus是支持AMQP 1.0协议的,所以基于AMQP 1.0协议实现的JMS客户端均都可以连接 连接 Service Bus发送接受消息。

请参考using JMS API with Azure Service Bus and AMQP 1.0 (New),使用最新的API去连接Service Bus

本文将采用Apache Qpid 来连接Service Bus 的消息队列,简单实现一个发送接收消息队列的功能。

实现类图:
QQ图片20160224113228.png

代码结构说明
AzureServiceBusServiceFactory 单例类,初始化Service Bus服务,并创建AzureServiceBusService
AzureServiceBusService 简单封装Service Bus接口, 发送消息,注册接收消息监听器
MessageListener 接收消息监听处理接口
MessageListenerContainer 维护Service Bus 队列和监听器的对应关系,并启动线程接收Service Bus消息

代码下载: 地址

阅读剩余部分...