Web3j OpenAPI Gradle Plugin
Gradle plugin that generates Web3j-OpenAPI project from Solidity smart contracts. It smoothly integrates with your project's build lifecycle by adding specific tasks that can be also run independently.
Plugin configuration
To configure the Web3j Gradle Plugin using the plugins DSL or the legacy plugin application,
check the plugin page.
The minimum Gradle version to run the plugin is 5.+
.
You should not add the Kotlin plugin to your project build. It already comes with the web3j-openapi-gradle-plugin
and applying it again may cause issues.
Then run your project containing Solidity contracts:
./gradlew build
After applying the plugin, the base directory for generated code (by default
$buildDir/generated/sources/web3j
) will contain a directory containing the generated
project for all the contracts specified in the configuration.
Code generation
The web3j
DSL allows to configure the generated code, e.g.:
web3j {
generatedPackageName = 'com.mycompany'
generatedFilesBaseDir = "$buildDir/custom/destination"
excludedContracts = ['Ownable']
openapi {
contextPath = "api"
}
}
The properties accepted by the openapi
DSL are listed in the following table:
Name | Type | Default value | Description |
---|---|---|---|
projectName |
String |
${rootProject.name} or OpenAPI |
Generated Web3j-OpenAPI project name. |
contextPath |
String |
$projectName |
Generated Web3j-OpenAPI context path /{contextPath}/... . |
generateServer |
Boolean |
true |
Whether to generate the API implementation and contract wrappers or only the interfaces |
Check the web3j-gradle-plugin
for the options accepted by the web3j
DSL.
The generatedPackageName
is a .
separated list of words. It will be converted to lower case during the generation.
The default value for the generatePackageName
is : org.web3j.openapi
The .{0}
is not accepted in the case we are generating an OpenAPI
project.
Source sets
By default, all .sol
files in $projectDir/src/main/solidity
will be processed by the plugin.
To specify and add different source sets, use the sourceSets
DSL:
sourceSets {
main {
solidity {
srcDir {
"my/custom/path/to/solidity"
}
}
}
}
Check the Solidity Plugin documentation to configure the smart contracts source code directories.
Output directories for generated Web3j-OpenAPI project will be added to your build automatically.
Swagger UI
The Swagger UI page will be found on : http://{host}:{port}/swagger-ui
, after running the project ./gradlew run
and specifying the Web3j-OpenAPI runtime configuration.
Plugin tasks
The Web3j-OpenAPI
Gradle plugin adds tasks to your project build using
a naming convention on a per source set basis
(i.e. generateWeb3jOpenApi
, generate[SourceSet]Web3jOpenApi
).
To obtain a list and description of all added tasks, run the command:
./gradlew tasks --all