diff --git a/.gitignore b/.gitignore
index d3f42380dcbf303f551ee6cea62149bef4939b6a..fcd94760efbbd8f2535da9515154b2e472aa41a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 /bin/
 /src/org/eventb/internal/core/typecheck/TypeUnifier.java
 SubParsers.patch
+local.*
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1760fbf4c69228929428c4b44bb3816addaed0c5
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,15 @@
+language: java
+before_install:
+- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in secring.gpg.enc -out secring.gpg
+  -d
+- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in pubring.gpg.enc -out pubring.gpg
+  -d
+- openssl aes-256-cbc -pass pass:$ENCRYPTION_PASSWORD -in gradle.properties.enc -out
+  gradle.properties -d
+sudo: false
+install: /bin/true
+script: gradle uploadArchives
+
+env:
+  global:
+    secure: qhGqw190PVbI70Vr4UVgnKfDS8YJTrVtkMMXCc/11kypTbu5dugheD1zNAYQQAzo8Fm4SrwAhvOhGF85M+FARrxBdJsuSrWPsTS94q65m/T/WCCmDsWyD8frwtmSBWgRP+lbTlunzXEDHB71Bu2+oi70yaGn2fnfr2mkyaUn4uUzsFa2ShleBCI48nV3nekbdriPQ8rhaou5lgxN3tjyK97hQXTCcs+T++15yLR3S08Duo5F4Tmpn6TpEyQaq9VuknKGVVJ/nuSKK3GQIiNzcKxCiuMAn698M/ALAGDdIrcd8lIELRyUQpIpqRiuBYFw3ZHWFXiid76GBXownOkdAfOwPrJLd4W9bNrTPFPWoSBv4+CtqhqDWzvm1DqR280Iso1pErlSyQmRfkD7ZPpOH5DnkXg6tKTQyNUECDQxCbnrV43YOJS3HUC3J7pUIv+7NGeAX3tLMNxEiYoswGeEurcfyshKKsCaZF+sQDsGjNX76EUxmL2o2pZTEYTXdBZ1Xg7FmzqatvAPn3GE+cU9rjV9HhNPY8W10LQLx0sHw+8PstQ/3t/rwV68YqCsTOXmIJCcdENMqZbcyiZ0NpNMElGUuWpJEcIQCzmTHdt/Fq48CHKOlVmJyTcKTuHsAJT09cSLxyG+WYK7pJk4VyvLKeht3CjMWm+31BkpjWPujfU=
diff --git a/build.gradle b/build.gradle
index c649977454db87ab97d3a33c584921bff054a384..b26fd7bf93697e701cdc5817ed9a9e51b975f234 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,6 +4,10 @@ apply plugin: 'maven'
 
 sourceCompatibility = '1.7'
 
+project.version = '3.2.0-SNAPSHOT'
+project.group = 'de.hhu.stups'
+project.archivesBaseName = 'rodin-eventb-ast'
+
 sourceSets {
     main {
         java {
@@ -71,3 +75,74 @@ compileJava {
 clean{
     delete "src/org/eventb/internal/core/typecheck/TypeUnifier.java"
 }
+
+if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) {
+
+println "Configured upload task"
+
+apply plugin: 'signing'
+
+task javadocJar(type: Jar) {
+    classifier = 'javadoc'
+    from javadoc
+}
+
+task sourcesJar(type: Jar) {
+    classifier = 'sources'
+    from sourceSets.main.allSource
+}
+
+artifacts {
+    archives javadocJar, sourcesJar
+}
+
+signing {
+    sign configurations.archives
+}
+
+uploadArchives {
+  repositories {
+    mavenDeployer {
+      beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
+
+      repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
+        authentication(userName: ossrhUsername, password: ossrhPassword)
+      }
+
+      snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
+        authentication(userName: ossrhUsername, password: ossrhPassword)
+      }
+
+      pom.project {
+        name 'Rodin EventB AST'
+        packaging 'jar'
+        // optionally artifactId can be defined here
+        description 'The AST library extracted from the Rodin Platform.'
+        url 'https://github.com/hhu-stups/rodin-ast'
+
+        licenses {
+          license {
+            name 'Eclipse Public License, V 1.0'
+            url 'https://www.eclipse.org/legal/epl-v10.html'
+          }
+        }
+
+        scm {
+          connection 'scm:git:git://github.com/hhu-stups/rodin-ast.git'
+          developerConnection 'scm:git:git@github.com:hhu-stups/rodin-ast.git'
+          url 'https://github.com/hhu-stups/rodin-ast'
+        }
+
+
+        developers {
+          developer {
+            id 'bendisposto'
+            name 'Jens Bendisposto'
+            email 'jens@bendisposto.de'
+          }
+        }
+      }
+    }
+  }
+}
+}
diff --git a/gradle.properties.enc b/gradle.properties.enc
new file mode 100644
index 0000000000000000000000000000000000000000..2525ff8a7575381ead7de4a9b1674e6965f46524
--- /dev/null
+++ b/gradle.properties.enc
@@ -0,0 +1 @@
+Salted__#���Z�䛾7������{j������;�j��SVGӇIzqs���9kx�y�-��2�TJ�9��m/�r���C�O�;<S+/_ 9�ȅ�	�5y���H�OӉ��&k�q�фS%�?>р��c�ƾl�w���Ɵg�n����a/�^��>�����=�0aY]� ��q>ݘ�X��=�)Qy�+jcu��b1u�増�}"LE7C��za
�\	�
\ No newline at end of file
diff --git a/pubring.gpg.enc b/pubring.gpg.enc
new file mode 100644
index 0000000000000000000000000000000000000000..31f08086dfd40344ce16521f389f1c313fd43d2a
Binary files /dev/null and b/pubring.gpg.enc differ
diff --git a/secring.gpg.enc b/secring.gpg.enc
new file mode 100644
index 0000000000000000000000000000000000000000..6c587abf9a8395804e5b573fd6fcf331870e333c
Binary files /dev/null and b/secring.gpg.enc differ