chart_module_dependencies.txt

Path: lib/generated/examples/chart_module_dependencies.txt
Last Update: Sat May 30 00:44:04 +0200 2015

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 (c) 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:\Eclipse\workspace'

 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)

[Validate]