diff --git a/lucene/build.xml b/lucene/build.xml
index 9397000..0473f69 100644
--- a/lucene/build.xml
+++ b/lucene/build.xml
@@ -262,6 +262,32 @@
     <modules-crawl target="rat-sources"/>
   </target>
 
+  <target name="findbugs" depends="findbugs-typedef,jar">
+    <sequential>
+      <echo message="findbugs analyzing lucene"/>
+      <mkdir dir="${common.build.dir}/findbugs"/>
+      <findbugs output="html"
+                outputFile="${common.build.dir}/findbugs/lucene.html"
+                failonerror="true"
+                warningsProperty="findbugs.warnings">
+        <auxClasspath>
+          <fileset dir=".">
+            <include name="**/lib/*.jar"/>
+          </fileset>
+        </auxClasspath>
+        <classpath refid="findbugs.classpath"/>
+        <fileset dir="${common.build.dir}" >
+          <include name="**/*.jar" />
+        </fileset>
+      </findbugs>
+      <fail message="Findbugs warnings were found!">
+        <condition>
+          <istrue value="${findbugs.warnings}"/>
+        </condition>
+      </fail>
+    </sequential>
+  </target>
+
   <!-- ================================================================== -->
   <!-- D I S T R I B U T I O N                                            -->
   <!-- ================================================================== -->
diff --git a/lucene/common-build.xml b/lucene/common-build.xml
index 327a01d..fb8f851 100644
--- a/lucene/common-build.xml
+++ b/lucene/common-build.xml
@@ -1941,6 +1941,11 @@ ${ant.project.name}.test.dependencies=${test.classpath.list}
     </fail>
   </target>
 
+  <target name="findbugs-typedef" depends="ivy-availability-check,ivy-fail">
+    <ivy:cachepath pathid="findbugs.classpath" organisation="com.google.code.findbugs" module="findbugs" revision="3.0.1" inline="true" log="download-only"  />
+    <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpathref="findbugs.classpath"/>
+  </target>
+
   <!--+
       | M A C R O S
       +-->
