diff --git a/build.gradle b/build.gradle
index 57ef779dde27af901e23965cf75cdf17a980b80c..9f7b1e7f455ac4492144179adafbfcb7df356f98 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,6 +2,41 @@ plugins {
     id 'idea'
 }
 
+String getReleaseVersion() {
+    def releaseVersion
+    file("core/java/src/net/i2p/CoreVersion.java").readLines().findAll({ line ->
+        line.contains("public final static String VERSION")
+    }).first().eachMatch('.*"([^"]+)";', {
+        releaseVersion = it[1]
+    })
+    releaseVersion
+}
+
+String getBuildVersion() {
+    def buildVersion
+    file("router/java/src/net/i2p/router/RouterVersion.java").readLines().findAll({ line ->
+        line.contains("public final static long BUILD")
+    }).first().eachMatch('.*=\\s+([0-9]+);', {
+        buildVersion = it[1]
+    })
+    buildVersion
+}
+
+String getBuildExtra() {
+    def buildExtra
+    file("router/java/src/net/i2p/router/RouterVersion.java").readLines().findAll({ line ->
+        line.contains("public final static String EXTRA")
+    }).first().eachMatch('.*"(.*)";', {
+        buildExtra = it[1]
+    })
+    buildExtra
+}
+
+def releaseVersion = getReleaseVersion()
+def buildVersion = getBuildVersion()
+def buildExtra = getBuildExtra()
+def fullVersion = "$releaseVersion-$buildVersion$buildExtra"
+
 // Exclude apps/ dir itself, but include its subdirs
 def javaProjects = subprojects - project(':apps')
 
@@ -23,7 +58,7 @@ configure(javaProjects) {
 
     jar {
         manifest {
-            attributes 'Implementation-Version': '0.9.31-7'
+            attributes 'Implementation-Version': "$fullVersion"
         }
     }