-
Notifications
You must be signed in to change notification settings - Fork 0
Packages and Maven artifacts
As Spine is an SDK, its subproject may offer the following kinds of the artifacts:
-
Production code — the API which is used by end users.
For example, the Validation library provides the classes and interfaces that are a part of the Validation Runtime. This is the Production code.
-
Tools code — the code which participates on development and build time.
For example, the Validation Library has plugins for the Spine Compiler which generate the code validating Protobuf types.
-
Testing utilities — the code which helps in testing the API which uses the Production code.
This is NOT the code arranged as test fixtures using the
java-test-fixturesplugin.This is the "production" code for writing tests which is going to be used as a
testImplementationortestFixturesImplementationdependency in end user tests.For example, the Spine Logging Library offers the Testlib artifact which helps in testing logging in the Production code. As such, this is also a tools artifact.
The code of Tools is likely to have the dependency on the Production code.
The Production code must NOT have dependencies on the code of Tools.
Testing utilities depend on the Production code. Testing utilities are used by other test fixtures or tests.
In order to highlight this separation, we have the following conventions:
-
Production codey goes as a sub-package under
io.spine.For example, the User Management Library would have the package
io.spine.users. -
The code of tools goes as a sub-package under
io.spine.tools.For example, the Spine Compiler goes under the package
io.spine.tools.compiler. -
Testing utilities goes under the
io.spine.testingpackage.For example, the Logging Testlib code goes under
io.spine.testing.logging.
-
Production artifacts go under the group
io.spineand must have thespine-prefix in the artifact name.For example, the Spine Logging library would have the this Maven coordinates:
io.spine:spine-logging:2.0.1. -
Tool artifacts go under the
io.spine.toolsgroup and do NOT have thespine-prefix in the artifact name.For example, the Spine Compiler artifact has the following Maven coordinates:
io.spine.tools:compiler:2.2.5. -
Testing utilities go under the
io.spine.toolsgroup because they are part of the development cycle.These artifacts have the
spine-prefix and-testlibsuffix:io.spine.tools:spine-logging-testlib:2.1.0.