title |
---|
Indexa Documentation |
The Indexa is a group of projects that work together to analyze and provide dependency data for developers, regarding the dependencies needed by any project which gathers dependencies from a single directory. The Indexa analyzes artifact data (data on jars, wars, and ears) and outputs lucene index data to detail the analysis results, specifically regarding what an artifact uses and which artifacts it is used by.
Please read our Dependency Management Primer for a deeper dive into dependency management concepts and how we came to realize our need for Indexa.
Providing a means of allowing developers to gather dependency/metadata information for the artifacts required by their project empowers them to explicitly declare their own dependencies. This ultimately yields a more stable project by enabling developers to resolve dependencies of that project space in whichever way is most appropriate for that particular codebase, because they will not have to adhere to limitations/restrictions created by any inappropriately coupled project dependencies. The stability achieved by this increased control over project dependencies contributes to decreased outages and greater availability.
There are a few components that come together to form Indexa.
The Graph and Mapper projects can be thought of as pieces of the puzzle for dependency management. The diagram below illustrates a potential outcome of the use of the graph, along with other components.
Various operations performed by the Graph project are outlined below
-
The models/POJO's are used to map the dependency data for resources/artifacts.
-
Lucene indexes are created for the data stored in models/POJO's using Lucene IndexWriter.
-
Stored lucene-indexes can be converted back to models/POJO's using the provided implementations.
The Mapper application has a dependency on the Graph application and uses the graph's capabilities to execute the dependency analysis.
Resources used in the mapper application could be JAR, EAR, WAR, class files, config files. Additionally, nested resources are analyzed by the mapper.
Various operations performed by the Mapper project are outlined below
-
Reads the resources from the user input and indexes the data with a mapper.
-
Uses multiple mapper's to collect the meta-data from the resource(s) file respectively. This functionality is known as 'mapping the meta-data'.
-
Data is collected by the mapper and stored in models/POJO provided by the graph.
-
Lucene documents are created from the models/POJO of the graph project; this function is known as 'indexing the meta-data.'
Please see our Contribution Guide