# File lib/buildr/java/pom.rb, line 83
    def dependencies(scopes = SCOPES_WE_USE)
      #try to cache dependencies also
      @depends_for_scopes ||= {}
      unless depends = @depends_for_scopes[scopes]
        declared = project["dependencies"].first["dependency"] rescue nil
        depends = (declared || []).reject { |dep| value_of(dep["optional"]) =~ /true/ }.
          map { |dep|
            spec = pom_to_hash(dep, properties)
            apply = managed(spec)
            spec = apply.merge(spec) if apply

            #calculate transitive dependencies
            if scopes.include?(spec[:scope])
              spec.delete(:scope)

              exclusions = dep["exclusions"]["exclusion"] rescue nil
              transitive_deps = POM.load(spec).dependencies(SCOPES_TRANSITIVE)
              transitive_deps = transitive_deps.reject{|dep|
                exclusions.find {|ex| dep.index("#{dep['groupdId'].first}:#{dep['artifactId'].first}:") == 0}
              } if exclusions

              [Artifact.to_spec(spec)] + transitive_deps
            end
          }.flatten.compact #.uniq_by{|spec| art = spec.split(':'); "#{art[0]}:#{art[1]}"}

        @depends_for_scopes[scopes] = depends
      end
      depends
    end