Getting Started with Providence

You do not need to install anything (but java) in order to start using providence. The project has builder plugins for maven and gradle, but if neither is used there is a binary code generator available here (check for the version of providence that you want to use).

Note that you always need to add a dependency to providence-core of the appropriate version for it to work.

Getting Providence CLI

See here for instructions on how to get morimekta.net CLI tools installed on your system. It has instructions for RedHat / YUM, Debian and Homebrew (for Mac):

Developer Setup

In order to compile providence itself, you need the java 8 java and javac commands (I recommend openjdk8-jdk), and maven (3.5). Then check out [email protected]:morimekta/providence.git and build with:

mvn clean install -Plib

There is also a Makefile for updating pre-compiled providence and thrift files. These need make and docker installed to work, but is not required for most development.

Using Providence

Providence can currently be used through build steps in gradle and maven.

Maven

In maven the setup is simply to add a directory src/main/providence or src/test/providence where thrift files go, and add the providence-maven-plugin and the core library to the pom.xml file like this:

<project>
    <dependencies>
        <dependency>
            <groupId>net.morimekta.providence</groupId>
            <artifactId>providence-core</artifactId>
            <version>${providence.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>net.morimekta.providence</groupId>
                <artifactId>providence-maven-plugin</artifactId>
                <version>${providence.version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
</project>

And the providence generated files can be regenerated by:

mvn generate-sources
# or
mvn generate-test-sources

Now the generated providence files should be available in your project.

Gradle

When using gradle as build engine, you can use the providence-gradle-plugin, which can be added with the lines below. The thrift files goes to the same location as with maven: src/main/providence or src/test/providence.

var providence_version = '{providence version}'

plugins {
    id "net.morimekta.providence.gradle" version "${providence_version}" apply false
}

apply plugin: 'java'
apply plugin: 'net.morimekta.providence.gradle'

dependencies {
    compile "net.morimekta.providence:providence-core:${providence_version}"
}

And the providence generated files can be regenerated by:

./gradlew generateProvidence
# or
./gradlew generateTestProvidence

Note that as the providence-gradle-plugin requires the java plugin to work, it currently can not be used with android development, as the android plugin is incompatible with java.

Using with IDL tool

When using the Über IDL Tool, you need to override how the providence plugin refers to the directory containing the thrift files.

In maven it is specified with the includes parameter in the execution config.

<plugin>
    <groupId>net.morimekta.providence</groupId>
    <artifactId>providence-maven-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <input>
            <includes>
                <include>idl/**/*.thrift</include>
                <include>idl/**/*.providence</include>
            </includes>
        </input>
    </configuration>
</plugin>

In gradle it is done via the providence setup block:

providence {
    main {
        input = fileTree('idl') {
            include '**/*.thrift'
            include '**/*.providence'
        }
    }
}

Start Programming

Now make a thrift file in the src/main/providence folder, and start using it. You may need to refresh your IDE to catch the newly added generated source file folders.