Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

There are no good, free tools to prepare diagrams - especially such that would automatically generate diagrams from the source code and project descriptors. On the other hand, good and
up-to-date documentation is a very important part of software development process - particularly in the Open Source world, where documentation is critical to help many people work on projects. On the other hand, nobody likes preparing documents and diagrams. To make the matters worse, using standard one-time diagrammers helps only for a short period of time. In fast growing projects, the pictures become obsolete very quickly. They start to mislead. Therefore I think that adding possibility to generate actual up-to-date diagrams in the build process is a very important idea - and Maven is the perfect environment to do that.

...

  • Filter unneeded information, and find specific artifacts in the tree
  • Get more information about artifacts
  • Answer "why was this artifact included?
  • Answer "why it changed scope or version?".

Project Timeline

TBD

Graph Structures

TBD

Graphs of Java Classes

...

The configuration of a connector will be described in XML format, via a dataSource tag.  The dataSource describes the groupId and artifactId of the connector, as well as a container tag for the details of the configuration.  The specific tags used in the configuration tag will be different for each connector, but common tag names will be used whenever appropriate.

Code Block
<dataSource>
	<groupId>org.apache.maven.diagram.connectors</groupId>
	<artifactId>classes-diagram</artifactId>
	<configuration>
                  <!-- details for a particular connector -->
        </configuration>
</dataSource>

...

The class diagram connector will inspect the classes in a directory, *.jar or *.war file and allowing to limit them. The information will be obtained from the classes by reflection.

Proposed configuration:

No Format
<dataSource>
	<groupId>org.apache.maven.diagram.connectors</groupId>
	<artifactId>classes-diagram</artifactId>
	<configuration>
		<dependencySets>
			<dependencySet>
				<groupId></groupId>
				<artifactId></artifactId>
				<classifier></classifier>
				<type></type>
			</dependencySet>
			<!-- ... -->
		</dependencySets>
	</configuration>
	<filtering>
		<includes>
			<include>.*</include><!-Default->
		</includes>
		<excludes>
			<exclude>org\.bad_package\..*</exclude>
		</excludes>
	</filtering>
</dataSource>

...

Providing data about project dependencies and allowing to limit them. In implementation it will be very similar to the "dependencies" task of maven-help-plugin

Proposed configuration:

No Format
<dataSource>
	<groupId>org.apache.maven.diagram.connectors</groupId>
	<artifactId>dependencies-diagram</artifactId>
	<configuration>
		<scopes>
			<scope>compile<scope>
			<scope>test<scope>
		<scopes>
		<excludesTransitives>   <!-- Do not expand transitive dependencies of the artifacts:-->
			<exclude>
				<artifactId></artifactId>
				<groupId></groupId>
				<type></type>
				<classifier></classifier>
			</exclude>
		</excludesTransitives>
	<configuration>
	<filtering>
		<includes>
			<include>.*<!-- default -->		</includes>
		<excludes>
			<exclude>org\.bad_groupId:.*</exclude>
		</excludes>
	</filtering>
</dataSource>

...