What is Jarvana?
Jarvana is a Java-based web application that lets you:
- Search for Java classes, projects, and content in the Apache Maven central repository
- Browse the central repository via a web interface that provides useful data such as folder contents and sizes
- Drill into archive files (including .zip and .tar.gz) via the web interface
- Inspect POMs, plugins, and other stuff
What does "Jarvana" mean?
"Jarvana" is a portmanteau of the words "Nirvana" and "jar". "Nirvana" refers to the Buddhist
concept of attaining enlightenment and freedom from endless suffering. A "jar" file is a Java archive file, which
essentially is a zipped collection of Java classes. Thus, "Jarvana" implies freedom from the suffering associated with
Java classes and archives.
How did Jarvana come into existence?
One night while coding, I was frustrated that no web-based tool existed (that I knew of) that would let me search
for a Java class and get its Maven artifact dependency entry so that I could use that class in my project. I had
recently learned Apache Lucene, so I decided to write a small web application to index and search all the Java classes
in the central repository. In the morning, I had my little prototype working and was thrilled with the results.
The Maven central repository represents a fantastic centralization of Java libraries, and it occurred to me at
that point that I could expand on that initial search idea to include project searches and content searches.
Hyperlinking could be used to provide links to related searches and files. I realized that there were several other
features that I really wanted, such as a Maven repository web application interface that would make browsing the
repository easier, by providing capabilities such as sorting and information about folders (folder size, number of files
inside, number of archives inside, etc). I also wanted to be able to inspect jar files and other archive files via the
web interface so that I wouldn't have to download and unzip them to see their contents. Furthermore, I wanted to be able
to inspect POM files and Maven plugins via the web interface, and I wanted these interfaces to provide lots of relevant
hyperlinks and search capabilities.
Why did we write Jarvana?
We are big fans of Java and big fans of Maven. Hopefully Jarvana will help out current Java
and Maven developers and will help enlist new Java and Maven fans.
What technologies are involved in Jarvana?
Jarvana is a Java web application. Search functionality is Lucene-based. An embedded Derby
database is used to store index configuration data. Several Apache Commons projects are utilized. Technologies featured
in the application include servlets, JSPs, JSTL, JDBC, XML, JavaBeans, threads, collections, and regular expressions, to
name a few. Jarvana uses Maven for project building and management. Jarvana was written using the Eclipse IDE.
What is Maven?
Apache Maven is a truly amazing Java "project management" tool. Perhaps its most important use
is as a project build tool, similar to Ant on steroids. A primary concept of Maven is the use of a centralized
"artifact" repository, which you can think of as a giant collection of jar files and related files. These jar files get downloaded from
the remote repository to your local computer's repository on an as-needed basis for your Maven-based Java projects.
Is Jarvana a Maven Repository Manager?
No, Jarvana is simply a Java web application that allows users to search and browse for
information in the central Maven Repository. If you require a repository manager, we recommend Sonatype Nexus
Does Jarvana have any Eclipse integration?
Currently, no. If you would like to get up and running quickly with Maven in Eclipse, we
recommend Sonatype Maven Integration for Eclipse (m2eclipse)
. If you would
like to work with Maven in Eclipse at a lower level, you can use Maven's maven-eclipse-plugin. Tutorials describing this
technique can be found here
Can I inspect the contents of a jar file in a jar file?
No, the archive "inspect" feature only allows inspection of the contents of an archive file,
not an archive file within an archive file.