Skip to content
Dominik Broj edited this page Nov 10, 2017 · 5 revisions

Migrating to Gradle would allow to split PlantUML in several modules to allow:

  • simple handling of GPL only code
  • easier reuse of modules
  • nice dependency structure

Because plantuml.jar is monolithic, most projects that make use of it simply copy the JARs instead of defining it as a dependency.

Proposed modules for the first refactored version:

  1. plantuml-ant
  2. plantuml-core
  3. plantuml-ditaa
  4. plantuml-smetana
  5. plantuml-ui

For each module there should be a corresponding plantuml-MODULE-x.y.z JAR, and for backward compatibility reasons, a plantuml.jar could be provided that includes all (but it's not published to Maven repos)

plantuml-ant

Depends on plantuml-core and org.apache.ant

plantuml-core

No dependencies and contains code that is APL compatible.

plantuml-ditaa

Depends on plantuml-core and contains the GPL code. This JAR won't be APL compatible.

plantuml-smetana

Depends on plantuml-core and provide the Graphviz port. (Should be replaced with https://github.com/nidi3/graphviz-java ?)

plantuml-ui

Depends on plantuml-core and provides the user interface (Swing based)

Indirect Dependencies

plantuml.jar seems to depend indirectly on other libraries too, but because it makes use of reflection, they not required for the compilation step.

Dependencies:

Sources Instead of Dependencies

The sources of the following projects seems to be included directly in the source tree, instead of declaring them as a compile dependency: