Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Proposal for rules for package names, relation to maven projects and for cyclic dependencies - Please review

...

CXF makes use of both PMD and CheckStyle to enforce common coding conventions. However, not everything can be expressed in a rule in one of these systems. This page describes additional conventions and considerations.

Projects and packages (proposal)

The package base for all CXF packages is "org.apache.cxf".

CXF is organized in maven projects. The groupId and artifactId of a project should relate to the base package name of the project. So for example
a maven project with groupId="org.apache.cxf" and artifactId="cxf-rt-transports-http-jetty" should only contain packages below "org.apache.cxf.transports.http-jetty.*".

It should always be avoided to have the same package name in more than one maven project as this will cause a lot of trouble in OSGi.

Cyclic Dependencies (proposal)

Cyclic dependencies between packages should be avoided as they make maintenance harder and make it more difficult to understand the architecture. Some more details can be found at: Software erosion and package tangles

Every CXF committer can get a free license of the Architecture tool structure 101 which is very helpfull in finding and avoiding cyclic dependencies. Just tell them that you are committer at Apache CXF to get a free license.

Commons XML Schema

CXF makes internal use of the Apache Commons XML Schema. Web services are defined in terms of XML Schemas, and that library provides a data model.

...