前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java类库web3j的Gradle插件 原

java类库web3j的Gradle插件 原

作者头像
笔阁
发布2018-12-18 17:10:43
6460
发布2018-12-18 17:10:43
举报
文章被收录于专栏:极客编程极客编程

web3j Gradle插件是从Solidity智能合约生成web3j Java封装的构建工具。它通过添加可以独立运行的特定任务,顺利地与项目的构建生命周期集成。

插件配置

在开始之前,如果计算机中尚未安装Solidity编译器,则需要安装它。

使用buildscript约定

要使用旧的Gradle buildscript约定安装web3j插件,应该将以下内容添加到构建文件的第一行(目前只有Gradle支持发行版本,而不是SNAPSHOT):

代码语言:javascript
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.web3j:web3j-gradle-plugin:0.1.6'
    }
}

apply plugin: 'web3j'
使用插件DSL

或者,如果你使用的是更现代的插件DSL,请将以下行添加到你的构建文件中:

代码语言:javascript
复制
plugins {
    id 'org.web3j' version '0.1.6'
}

然后运行包含Solidity智能合约的项目:

代码语言:javascript
复制
./gradlew build

应用插件后,生成代码的基本目录(默认为$buildDir/generated/source/web3j)将包含每个源集的目录(默认为maintest),其中包含智能合约封装器的Java类。

代码生成

web3j DSL允许配置生成的代码,例如:

代码语言:javascript
复制
web3j {
    generatedPackageName = 'com.mycompany.{0}'
    generatedFilesBaseDir = "$buildDir/custom/destination"
    excludedContracts = ['Ownable']
    useNativeJavaTypes = false
}

DSL接受的属性如下表所示:

generatedPackageName被评估为接受大括号({0})之间的单个参数的消息格式字符串,允许使用合约名称格式化生成的值。为方便起见,当应用于Java包名称时,它将转换为小写。

例如,在一个具有组com.mycompany的项目将generatedPackageName设置为${group}.{0},那名为MyToken.sol的Solidity智能合约将被在com.mycompany.mytoken包中生成。

此外,默认值包含${group}属性,该属性对应于项目中的组(例如com.mycompany)。如果项目未定义组属性,则生成的包名称将为org.web3j.{0}

请注意,消息格式参数不是Gradle属性,不应以$开头。

来源设置

默认情况下,$projectDir/src/main/solidity中的所有.sol文件都将由插件处理。要指定和添加不同的来源,请使用sourceSets DSL:

代码语言:javascript
复制
sourceSets {
    main {
        solidity {
            srcDir { 
                "my/custom/path/to/solidity" 
             }
        }
    }
}

检查Solidity Plugin文档以配置智能合约源代码目录。

生成的智能合约封装器Java代码的输出目录将自动添加到你的构建中。

插件任务

Java插件使用基于每个源的命名约定(即compileJavacompileTestJava)向项目构建添加任务。

类似地,Solidity插件将为项目主源添加generateContractWrappers任务,并为每个剩余的源(例如test)添加generate[SourceSet]ContractWrappers

要获取所有已添加任务的列表和说明,请运行以下命令:

代码语言:javascript
复制
./gradlew tasks --all

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 插件配置
    • 使用buildscript约定
      • 使用插件DSL
      • 代码生成
      • 来源设置
      • 插件任务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档