-
Notifications
You must be signed in to change notification settings - Fork 118
1.2. Group and Artifact ID's
The following prefixes should be used for artifact's Group IDs:
- org.hitachivantara for CE projects
- com.hitachivantara for EE projects
Whenever possible, complement the above prefixes providing a plausible group name for your project in the form of <prefix>.<sub-group>. For example, org.hitachivantara.workernodes.
In most scenarios, unless there is a clear logical and functional division, the groupId should be common to all the modules in the project. This provides an easier way to search for all the modules of a project. In the cases where there is a need to have a functional division within the project, that can be included in the groupId. For example org.hitachivantara.reporting.designer and org.hitachivantara.reporting.libraries.
The artifactId of the modules in your project should be descriptive of what the module represents within the project.
Use the following guidelines when defining the artifactId's:
- The root module of a project should be the name of the project. If this is not possible, because the name is required by another module (an assembly for example), append the "-parent" or "-modules" suffix.
- An api module should have the "-api" suffix.
- An impl module should have the "-impl" suffix.
- The assemblies module, when existing as a parent, should have the suffix "-assemblies".
- For the time being, due to a plugin limitation, feature assemblies have specific artifactId rules. See here for more information.
Avoid doing the following:
- Prefixing artifactId's with hitachivantara. This adds no extra information and therefore has no value.
- Adding redundant information such as the suffixes "-pom" or "-jar" to the artifactId.
my-project org.hitachivantara.myproject:my-project
├── api - :my-project-api
├── impl - :my-project-impl
└── assemblies - :my-project-assemblies
├── feature - :pentaho-my-project
└── plugin - :my-project-plugin
my-project org.hitachivantara.myproject:my-project
├── apis - :my-project-apis
│ ├── rest - :my-project-rest-api
│ └── java - :my-project-java-api
├── impls - :my-project-impls
│ ├── rest - :my-project-rest-impl
│ └── java - :my-project-java-impl
└── assemblies - :my-project-assemblies
├── feature - :hitachivantara-my-project
└── plugin - :my-project-plugin
my-project org.hitachivantara.myproject:my-project
├── impl - :my-project-impl
└── assembly - :my-project-plugin
my-project org.hitachivantara.myproject:my-project
├── core - :core
│ ├── api - :core-api
│ ├── impl - :core-impl
│ └── assembly - :hitachivantara-my-project-core
├── client - :client
│ ├── apis - :client-apis
│ │ ├── visualisation - :client-visualization-api
│ │ └── edition - :client-edition-api
│ ├── impls - :client-impls
│ │ ├── visualisation - :client-visualization-impl
│ │ └── edition - :client-edition-impl
│ └── assemblies - :client-assemblies
│ ├── feature - :hitachivantara-my-project-client
│ └── package - :client-package
└── server - :server
├── apis - :server-apis
│ ├── crud - :server-crud-api
│ └── credit - :server-credit-api
├── impls - :server-impls
│ ├── crud - :server-crud-impl
│ └── credit - :server-credit-impl
└── assemblies - :server-assemblies
├── war - :server-war
├── package - :server-package
└── feature - :pentaho-my-project-server
my-project org.hitachivantara.myproject:my-project
├── client org.hitachivantara.myproject.client:client-modules
│ ├── visualisation - :visualisation
│ │ ├── api - :visualization-api
│ │ └── impl - :visualisation-impl
│ ├── edition - :edition
│ │ ├── api - :edition-api
│ │ └── impl - :edition-impl
│ └── transaction - :transaction
│ ├── api - :transaction-api
│ └── impl - :transaction-impl
├── server org.hitachivantara.myproject.server:server-modules
│ ├── payment - :payment
│ │ ├── api - :payment-api
│ │ └── impl - :payment-impl
│ └── audit - :audit
│ ├── api - :audit-api
│ └── impl - :audit-impl
└── assemblies org.hitachivantara.myproject:my-project-assemblies
├── client - :my-project-client
└── server - :my-project-server