Simple Gradle plugin used by the Web3j plugin
to compile Solidity contracts, but it can be used in any standalone project for this purpose.
Plugin configuration
To configure the Solidity 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.+.
Then run this command from your project containing Solidity contracts:
./gradlew build
After the task execution, the base directory for compiled code (by default
$buildDir/resources/solidity) will contain a directory for each source set
(by default main and test), and each of those a directory with the compiled code.
Code generation
The solidity DSL allows to configure the generated code, e.g.:
The properties accepted by the DSL are listed in the following table:
Name
Type
Default value
Description
executable
String
null (bundled with the plugin)
Solidity compiler path.
version
String
null (defined by contract's pragma)
Solidity compiler version.
overwrite
Boolean
true
Overwrite existing files.
resolvePackages
Boolean
true
Resolve third-party contract packages.
optimize
Boolean
true
Enable byte code optimizer.
optimizeRuns
Integer
200
Set for how many contract runs to optimize.
prettyJson
Boolean
false
Output JSON in pretty format. Enables the combined JSON output.
ignoreMissing
Boolean
false
Ignore missing files.
allowPaths
List<String>
['src/main/solidity', 'src/test/solidity', ...]
Allow a given path for imports.
pathRemappings
Map<String, String>
[ : ]
Remaps contract imports to target path.
evmVersion
EVMVersion
BYZANTIUM
Select desired EVM version.
outputComponents
OutputComponent[]
[BIN, ABI]
List of output components to produce.
combinedOutputComponents
CombinedOutputComponent[]
[BIN, BIN_RUNTIME, SRCMAP, SRCMAP_RUNTIME]
List of output components in combined JSON output.
Notes:
Setting the executable property will disable the bundled solc and use your local or containerized executable:
solidity {
executable ="docker run --rm -v $projectDir/src:/src -v $projectDir/build:/build ethereum/solc:0.6.4-alpine"
version ='0.4.15'
}
Use version to change the bundled Solidity version.
Check the Solidity releases
for all available versions.
allowPaths contains all project's Solidity source sets by default.
Source sets
By default, all .sol files in $projectDir/src/main/solidity and $projectDir/src/test/solidity will be processed by
the plugin. To specify and add different source sets, use the sourceSets DSL. You can also set your preferred output
directory for compiled code.
The plugin makes use of the Node plugin to resolve third-party
contract dependencies. It currently supports Open Zeppelin
and Uniswap.
When importing libraries from @openzeppelin/contracts in your Solidity contract, the plugin will use the
task resolveSolidity to generate a package.json file required by
the Node plugin.
By default, package.json will be generated under the build/ directory. If you wish to change the directory for the
Node plugin, add the following snippet to your build.gradle file:
请发表评论