# Example usage of JavaClass::Dependencies::Graph: Iterate all folders of a root folder. # Load each component separately and construct the dependency graph.

# Author

Peter Kofler

# Copyright

Copyright © 2009, Peter Kofler.

# License

BSD License

# # === Steps #

# require 'javaclass/dsl/mixin' # require 'javaclass/dependencies/graph' # require 'javaclass/dependencies/classpath_node' # require 'javaclass/dependencies/yaml_serializer' # require 'javaclass/dependencies/graphml_serializer' #

# 1) define the location of the plugins # location = 'C:Eclipseworkspace' #

# plugins = JavaClass::Dependencies::Graph.new #

# 2) iterate all plugins of a workspace location # Dir.new(location).each do |folder| # path = File.join(location, folder) # next unless FileTest.directory? path #

# classes = File.join(path, 'bin') # next unless FileTest.exist?(classes) #

# 3) create a classpath for each plugin # cp = classpath(classes) # next if cp.count == 0 #

# 4) add a JavaClass::Dependencies::Node for that plugin to the graph # plugins.add(JavaClass::Dependencies::ClasspathNode.new(folder, cp)) # end #

# 5) resolve all dependencies of all nodes in the graph # plugins.resolve_dependencies # puts “#{plugins.to_a.size} plugins loaded” #

# 6) save the result in various formats, e.g. GraphML or YAML # JavaClass::Dependencies::GraphmlSerializer.new.save('plugin_dependencies', plugins) # JavaClass::Dependencies::YamlSerializer.new.save('plugin_dependencies', plugins) # JavaClass::Dependencies::YamlSerializer.new(:outgoing => :summary).save('plugin_dependencies_summary', plugins)