4.4 KiB
Cordapp Plugins
Building Plugins
To build the plugins that Cordapps require run the following from the root of the Corda project:
..code-block:
gradlew publishToMavenLocal
The plugins will now be installed to MavenLocal.
Installing Plugins
To use the plugins, if you are not already using the Cordapp template project, you must modify your build.gradle. Add the following segments to the relevant part of your build.gradle.
..code-block:
buildscript {
ext.corda_version = '<enter the corda version you build against here>'
... (your buildscript)
repositories {
... (other repositories)
mavenLocal()
}
dependencies {
... (your dependencies)
classpath "com.r3corda.plugins:<plugin-maven-name>:$corda_version"
}
}
apply plugin: 'com.r3corda.plugins.<plugin-maven-name>'
...
Cordformation
Plugin Maven Name:
cordformation
Cordformation is the local node deployment system for Cordapps, the nodes generated are intended to be used for experimenting, debugging, and testing node configurations and setups but not intended for production or testnet deployment.
To use this plugin you must add a new task that is of the type com.r3corda.plugins.Cordform and then configure the nodes you wish to deploy with the Node and nodes configuration DSL. This DSL is specified in the JavaDoc but an example of this is in the template-cordapp and below is a three node example;
..code-block:
task deployNodes(type: com.r3corda.plugins.Cordform, dependsOn: ['build']) {
directory "./build/nodes" // The output directory
networkMap "Notary" // This will resolve a node in this configuration
node {
name "Notary"
dirName "notary"
nearestCity "London"
notary true // Sets this node to be a notary
advertisedServices = []
artemisPort 12345
webPort 12346
cordapps = []
}
node {
name "NodeA"
dirName "nodea"
nearestCity "London"
advertisedServices = []
artemisPort 31337
webPort 31339
cordapps = []
}
node {
name "NodeB"
dirName "nodeb"
nearestCity "New York"
advertisedServices = []
artemisPort 31338
webPort 31340
cordapps = []
}
}
Because it is a task you can create multiple tasks with multiple configurations that you use commonly.
New nodes can be added by simply adding another node block and giving it a different name, directory and ports. When you run this task it will install the nodes to the directory specified and a script will be generated (for *nix users only at present) to run the nodes with one command.
Other cordapps can also be specified if they are already specified as classpath or compile dependencies in your build.gradle.
Publish Utils
Plugin Maven Name:
publish-utils
Publishing utilities adds a couple of tasks to any project it is applied to that hide some boilerplate that would otherwise be placed in the Cordapp template's build.gradle.
There are two tasks exposed: sourceJar and javadocJar and both return a FileCollection.
It is used within the publishing block of a build.gradle as such;
..code-block:
// This will publish the sources, javadoc, and Java components to Maven.
// See the `maven-publish` plugin for more info: https://docs.gradle.org/current/userguide/publishing_maven.html
publishing {
publications {
jarAndSources(MavenPublication) {
from components.java
// The two lines below are the tasks added by this plugin.
artifact sourceJar
artifact javadocJar
}
}
}
Quasar Utils
Plugin Maven Name:
quasar-utils
Quasar utilities adds several tasks and configuration that provide a default Quasar setup and removes some boilerplate. One line must be added to your build.gradle once you apply this plugin:
..code-block:
quasarScan.dependsOn('classes')
If any sub-projects are added that this project depends on then add the gradle target for that project to the depends on statement. eg:
..code-block:
quasarScan.dependsOn('classes', 'subproject:subsubproject', ...)