web3j Gradle插件是从Solidity智能合约生成web3j Java封装的构建工具。它通过添加可以独立运行的特定任务,顺利地与项目的构建生命周期集成。
插件配置
在开始之前,如果计算机中尚未安装Solidity编译器,则需要安装它。
使用buildscript约定
要使用旧的Gradle buildscript
约定安装web3j插件,应该将以下内容添加到构建文件的第一行(目前只有Gradle支持发行版本,而不是SNAPSHOT):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.web3j:web3j-gradle-plugin:0.1.6'
}
}
apply plugin: 'web3j'
使用插件DSL
或者,如果你使用的是更现代的插件DSL,请将以下行添加到你的构建文件中:
plugins {
id 'org.web3j' version '0.1.6'
}
然后运行包含Solidity智能合约的项目:
./gradlew build
应用插件后,生成代码的基本目录(默认为$buildDir/generated/source/web3j
)将包含每个源集的目录(默认为main
和test
),其中包含智能合约封装器的Java类。
代码生成
web3j
DSL允许配置生成的代码,例如:
web3j {
generatedPackageName = 'com.mycompany.{0}'
generatedFilesBaseDir = "$buildDir/custom/destination"
excludedContracts = ['Ownable']
useNativeJavaTypes = false
}
DSL接受的属性如下表所示:
image
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:
sourceSets {
main {
solidity {
srcDir {
"my/custom/path/to/solidity"
}
}
}
}
检查Solidity Plugin文档以配置智能合约源代码目录。
生成的智能合约封装器Java代码的输出目录将自动添加到你的构建中。
插件任务
Java插件使用基于每个源的命名约定(即compileJava
,compileTestJava
)向项目构建添加任务。
类似地,Solidity插件将为项目主源添加generateContractWrappers
任务,并为每个剩余的源(例如test
)添加generate[SourceSet]ContractWrappers
。
要获取所有已添加任务的列表和说明,请运行以下命令:
./gradlew tasks --all
更多的信息
有关web3j的更多信息,请参阅web3j主页中文版。
======================================================================
分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:
- java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
- python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
- php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
- 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
- C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
- EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
- java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
- php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
- tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。
汇智网原创翻译,转载请标明出处。这里是原文web3j的Gradle插件