web3j maven插件用于基于solidity智能合约文件创建java类。
插件的基本配置将从 src/main/resources 获取solidity文件,并将java类生成到 src/main/java 文件夹中。
<build>
<plugins>
<plugin>
<groupId>org.web3j</groupId>
<artifactId>web3j-maven-plugin</artifactId>
<version>0.3.7</version>
<configuration>
<soliditySourceFiles/>
</configuration>
</plugin>
</plugins>
</build>
运行插件执行目标 generate-sources :
mvn web3j:generate-sources
有几个变量用于选择solidity源文件,定义源目标路径或更改包名称。
outputDirectory 的配置优先于 sourceDestination 。
创建一个标准的java maven项目。将以下 <plugin> 配置添加到 pom.xml 文件中:
<plugin>
<groupId>org.web3j</groupId>
<artifactId>web3j-maven-plugin</artifactId>
<version>0.3.7</version>
<configuration>
<packageName>com.zuehlke.blockchain.model</packageName>
<sourceDestination>src/main/java/generated</sourceDestination>
<nativeJavaType>true</nativeJavaType>
<outputFormat>java,bin</outputFormat>
<soliditySourceFiles>
<directory>src/main/resources</directory>
<includes>
<include>**/*.sol</include>
</includes>
</soliditySourceFiles>
<outputDirectory>
<java>src/java/generated</java>
<bin>src/bin/generated</bin>
<abi>src/abi/generated</abi>
</outputDirectory>
</configuration>
</plugin>
将你的Solidity合约文件添加到文件夹 src/main/resources 中。确保solidity文件以 .sol 结尾。
开始生成过程:
> mvn web3j:generate-sources [INFO] --- web3j-maven-plugin:0.1.2:generate-sources (default-cli) @ hotel-showcase --- [INFO] process 'HotelShowCaseProxy.sol' [INFO] Built Class for contract 'HotelShowCaseProxy' [INFO] Built Class for contract 'HotelShowCaseV2' [INFO] Built Class for contract 'Owned' [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.681 s [INFO] Finished at: 2017-06-13T07:07:04+02:00 [INFO] Final Memory: 14M/187M [INFO] ------------------------------------------------------------------------ Process finished with exit code 0
你可以在目录 src/main/java/generated/ 中找到生成的java类。
下一步是与智能合约进行交互。请参阅web3j主页中文版的智能合约部署和交互。
有关多模块项目配置,请参阅@fcorneli的 帖子 。简而言之:要获取生成的java源文件,需要build-helper-maven-plugin配置。此外,多模块项目中需要 ${basedir} 前缀。
======================================================================
分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:
汇智网原创翻译,转载请标明出处。这里是原文 web3j的maven插件