diff --git a/.gitignore b/.gitignore
index fe3bec2ef12de9debced01035268946f36a1cbae..6aa49287512956886644f7ee8924b01287e203b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,4 +15,6 @@ tmp/
 PROB_LOGFILE_IS_UNDEFINED
 .settings/org.eclipse.jdt.ui.prefs
 src/main/resources/build.properties
-config.groovy
\ No newline at end of file
+config.groovy
+local.*
+Version.java
diff --git a/build.gradle b/build.gradle
index 2ee8776a054c3e304d8d61750738a1b970ae0695..04d2c52892663bfc771d1985df61e1fcd2ee0b10 100644
--- a/build.gradle
+++ b/build.gradle
@@ -37,10 +37,31 @@ artifacts {
     archives javadocJar, sourcesJar
 }
 
+task writeVersion() {
+
+  doFirst {
+  def buildconstants_class = """
+  package org.sablecc.sablecc;
+
+  public class Version
+  {
+    public static final String VERSION = "${project.version}";
+  }
+  """
+  File f = file("src/main/java/org/sablecc/sablecc/Version.java")
+  f.delete()
+  f <<  buildconstants_class
+ }
+}
+
+compileJava {
+  dependsOn = ['writeVersion']
+}
+
 task deploy(dependsOn: [jar,test,javadoc], group: 'Build')
 
 if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) {
-  
+
 apply plugin: 'signing'
 
 signing {