# Generate a JavaClass::ClassList
, which contains all class of a given # JAR in the local Maven repository. Use JavaClass::Classpath::MavenArtefact
# to identify and (possibly download) the JAR under question.
- # Author
-
Peter Kofler
- # Copyright
-
Copyright © 2009, Peter Kofler.
- # License
# # === Usage #
# require 'javaclass/classlist/jar_searcher' # require 'javaclass/classpath/maven_artefact' # require 'javaclass/classlist/list' #
# Define configuration for some Maven artefacts # JARS = [ JavaClass::Classpath::MavenArtefact.new
('commons-lang', 'commons-lang', '2.6'),, … ] #
# For all artefacts listed in JARS
, load classes and write list files. # JARS.each do |artefact| #
# 1) create a new JavaClass::ClassList::List
to contain the classes of this JAR # list = JavaClass::ClassList::List.new
#
# 2) create a JavaClass::ClassList::JarSearcher
# searcher = JavaClass::ClassList::JarSearcher.new
# searcher.skip_package_classes = true #
# 3) create the classpath of the artefact's JAR # artefact.download_if_needed # classpath = artefact.classpath #
# 4) scan the JAR and add classes to the list # searcher.add_list_from_classpath(artefact.version, classpath, list) #
# 5) save the list to a file named “Commons Lang 2.6.txt” (after the artefact) # File.open(“#{artefact.title} #{artefact.version}.txt”, “w”) do |f| # # print title # f.print “*** #{artefact.title}n” #
# list.packages.each { |pkg| # f.print “n” # # print package name # f.print “* #{pkg.name}n” #
# # print class names # pkg.classes.each { |c| f.print “ #{c.name}n” } # } # end #
# puts “processed #{artefact.name}” # end #
# 6) the generated file looks like # *** Commons Lang # # * org.apache.commons.lang # ArrayUtils # BitField # … # # * org.apache.commons.lang.builder # CompareToBuilder # EqualsBuilder # HashCodeBuilder # …