Frequently Asked Questions

1. How does Quokka compare to Maven?
See the separate document here and the side by side comparision of a web application here
2. Why doesn't Quokka use the Maven global repository?

Quokka would love to use the Maven repository and there were some initial naive attempts to do this. Unfortunately, the Maven repository is intimately tied to Maven and pratically impossible to parse by anything but maven itself.

The root of the problem is that Maven doesn't actually have a repository format as such. Instead, it just copies the project definition (pom.xml) that created an artifact into the repository. That project definition must then be parsed to determine the dependencies. Unfortunately, the pom.xml can include all sorts of surprises, not limited to:

  • References to parent poms
  • Indirect definitions of versions via properties
  • Dependencies may change dependending on the JDK in use due to profiles being activated automatically
  • Some dependencies are added on the fly by plugins, notably the maven dependency plugin
  • Some versions are set/overridden by distribution management mechanisms

You don't believe this exists? See here for an example of most of the above in action.

If you are not interested in transitive dependencies, then yes, it would be possible access just the artifacts. However, Quokka makes use of transitive dependencies and therefore needs this information in an accessible format. The (unhappy) solution adopted in the end was to make importing from maven as easy as possible (the import process actually uses a maven plugin to extract the path information using maven itself).