diff --git a/scrplugin/scrtask/changelog.txt b/scrplugin/scrtask/changelog.txt
index 482012b..3b9a1e9 100644
--- a/scrplugin/scrtask/changelog.txt
+++ b/scrplugin/scrtask/changelog.txt
@@ -1,6 +1,7 @@
 Changes from 1.8.0 to 1.7.0
 ---------------------------
 ** Improvement
+    * [FELIX-4175] - scr.ant task does not provide scanClasses option
     * [FELIX-4101] - Create metatype.properties file when description and label are inlined
     * [FELIX-4126] - Discontinue creation of single XML descriptor files 
 
diff --git a/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java b/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java
index 74e0cb7..85dd3f7 100644
--- a/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java
+++ b/scrplugin/scrtask/src/main/java/org/apache/felix/scrplugin/ant/SCRDescriptorTask.java
@@ -59,6 +59,12 @@
     protected boolean strictMode = false;
 
     /**
+     * Set to true to scan classes instead of sources.
+     * By default scan sources to be backwards compatible
+     */
+    private boolean scanClasses = false;
+
+    /**
      * The version of the DS spec this plugin generates a descriptor for. By
      * default the version is detected by the used tags.
      *
@@ -131,11 +137,20 @@
         final List<Source> result = new ArrayList<Source>();
         @SuppressWarnings("unchecked")
         final Iterator<Resource> resources = sourceFiles.iterator();
+
+        final String ext;
+        if(scanClasses) {
+            ext = ".class";
+        } else {
+            ext = ".java";
+        }
+
         while ( resources.hasNext() ) {
             final Resource r = resources.next();
             if ( r instanceof FileResource ) {
                 final File file = ( ( FileResource ) r ).getFile();
-                if ( file.getName().endsWith(".java") ) {
+
+                if ( file.getName().endsWith(ext) ) {
                     result.add(new Source() {
 
                         public File getFile() {
@@ -144,7 +159,7 @@
 
                         public String getClassName() {
                             String name = file.getAbsolutePath().substring(prefixLength).replace(File.separatorChar, '/').replace('/', '.');
-                            return name.substring(0, name.length() - 5);
+                            return name.substring(0, name.length() - ext.length());
                         }
                     });
                 }
@@ -216,4 +231,12 @@
     public void setSpecVersion( String specVersion ) {
         this.specVersion = specVersion;
     }
+
+    public boolean isScanClasses() {
+        return scanClasses;
+    }
+
+    public void setScanClasses(boolean scanClasses) {
+        this.scanClasses = scanClasses;
+    }
 }
