PIE is an API and runtime for developing interactive software development pipelines and incremental build scripts.
Copyright © 2018-2019 Delft University of Technology
The code and files in this project are licensed under the Apache License, Version 2.0. You may use the files in this project in compliance with the license.
If you have a question, enhancement, feature request, or bug report, please search the issue tracker for a solution or workaround, or create a new issue.
PIE is deployed as a set of Maven artifacts to the MetaBorg artifact server, which you can consume with Maven or Gradle.
To be able to get artifacts from the MetaBorg artifact servers, add the following to your build.gradle
file:
repositories {
jcenter()
maven { url "https://artifacts.metaborg.org/content/repositories/releases/" }
maven { url "https://artifacts.metaborg.org/content/repositories/snapshots/" }
}
or build.gradle.kts
file:
repositories {
jcenter()
maven { url = uri("https://artifacts.metaborg.org/content/repositories/releases/") }
maven { url = uri("https://artifacts.metaborg.org/content/repositories/snapshots/") }
}
or add the following to your Maven pom.xml
file:
<repositories>
<repository>
<id>metaborg-release-repo</id>
<url>https://artifacts.metaborg.org/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>metaborg-snapshot-repo</id>
<url>https://artifacts.metaborg.org/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
To depend on version 0.6.0
of the runtime to build and execute pipelines, add the following Gradle dependency to your build.gradle
file:
implementation 'org.metaborg:pie.runtime:0.6.0'
or build.gradle.kts
file:
implementation("org.metaborg:pie.runtime:0.6.0")
or add the following to your Maven pom.xml
file:
<dependency>
<groupId>org.metaborg</groupId>
<artifactId>pie.runtime</artifactId>
<version>0.6.0</version>
</dependency>
The latest stable version is listed at the top of this file.
The development version in the develop
branch is published on every commit with version develop-SNAPSHOT
which you can depend on as follows:
implementation 'org.metaborg:pie.runtime:develop-SNAPSHOT'
implementation("org.metaborg:pie.runtime:develop-SNAPSHOT")
<dependency>
<groupId>org.metaborg</groupId>
<artifactId>pie.runtime</artifactId>
<version>develop-SNAPSHOT</version>
</dependency>
PIE consists of several components:
- pie.api: The PIE API for developing reusable interactive pipelines or incremental build scripts
- pie.runtime: The PIE runtime for incrementally executing pipelines developed with the API
- pie.taskdefs.guice: Guice dependency injection support for task definitions
- pie.dagger: Dagger dependency injection support
As prerequisites for building PIE, you need a Java Development Kit (JDK) of version 8 or higher. To build PIE, run the Gradle wrapper as follows in the root directory of this repository:
./gradlew buildAll
PIE can developed by importing this repository into IntelliJ IDEA or Eclipse as Gradle projects. Alternatively, any code editor in conjunction with local builds described above should work.
PIE is automatically built, tested, and published on our buildfarm, configured in the Jenkinsfile.
It uses the gradlePipeline shared pipeline from the metaborg.jenkins.pipeline
shared pipeline library.
To publish PIE, run ./gradlew publishAll
.
To publish a new release version of PIE, first Git commit your changes and tag the commit in the form of release-<version>
, e.g., release-0.3.0
, and then run ./gradlew publishAll
.