Project structure¶
Modules¶
Core Modules¶
All the core modules are located under the Strongbox project. Each of these modules has a README.md
file explaining
briefly what kind of code contains. New modules should also follow the same format.
This is a brief breakdown of the modules:
-
strongbox-aql
This is where the Artifact Query Language (AQL) code is located. -
strongbox-client
This is where the artifact client resides. -
strongbox-commons
This is where the most common code that is shared across modules resides. -
strongbox-configuration
Contains configuration parsing related code. -
-
strongbox-cron-api
Contains the Cron API code, that is required by custom cron and controller implementations. -
strongbox-cron-tasks
Contains the common built-in cron tasks.
-
-
strongbox-data-service
Contains the base implementation of data service classes. Check the Getting Started With Persistence article for more details. -
strongbox-distribution
This module produces the final distribution binaries for different platforms. The binaries are then made public under the releases section. -
strongbox-event-api
Contains our Event API. -
-
strongbox-common-resources
This is the place where common resources which can be used by multiple projects reside. The idea is not have to duplicate things such aslogback*xml
, keystores and so on across the other modules. These resources are copied using themaven-dependency-plugin
. -
strongbox-storage-api-resources
Contains thestrongbox.xml
configuration file.
-
-
strongbox-rest-client
Contains the REST API client. -
-
strongbox-security-api
Contains various security and encryption related classes.
-
strongbox-storage
Contains the code for the storage related modules.-
strongbox-storage-api
Contains the the storage API. -
strongbox-storage-core
Contains the core classes for the storage API. -
strongbox-storage-layout-providers
-
strongbox-storage-maven-layout
-
strongbox-maven-metadata-api
This is the implementation of the support for themaven-metadata.xml
format. -
strongbox-storage-maven-layout-provider
This is the implementation of the Maven Layout Provider. It depends on the strongbox-maven-metadata-api.
-
-
-
strongbox-storage-npm-layout-provider
This is the implementation of the NPM layout provider. It depends on the strongbox-npm-metadata project. -
strongbox-storage-nuget-layout-provider
This is the implementation of the Nuget layout provider. -
strongbox-storage-p2-layout-provider
This is an incomplete early draft implementation of the P2 OSGi layout provider. This module needs a lot more work, before the P2 layout provider could be usable. -
strongbox-storage-raw-layout-provider
This is the implementation of the Raw layout provider.
-
-
strongbox-testing
Contains various very useful base classes for testing.-
strongbox-testing-core
Contains common testing-related code. -
strongbox-testing-web
Contains the commonrestassured
configuration for controller tests.
-
-
strongbox-web-core
This is the web module which contains all the controllers. -
strongbox-web-forms
This is the module that contains all the web forms. You might find the Writing Web Form Tests useful.
Additional Modules¶
All the Strongbox modules are organized under the Strongbox organization.
Creating New Modules/Projects¶
-
Each new modules needs to extend the
strongbox-parent
, from where it should be extending the dependencies and the configuration for Maven plugins. Modules should not contain any artifact or plugin versions. -
All modules need to have a
README.md
file describing in brief what the module is and give brief pointers on what classes and tests are of primary interest. -
Each project in the Strongbox organization needs to have a copy of the LICENSE file.
Integration Tests¶
Web Integration Tests¶
The web integration tests are located in the strongbox-web-integration-tests project. They are using the maven-invoker-plugin to execute various tests against a Strongbox instance which is started for this purpose. These tests start Maven processes via the maven-invoker-plugin and are literally mimicking Maven behaviour. The outcome of the tests is validated using Groovy scripts.
Packaging Modules¶
For a much more lightweight build the modules which carry out the actual packaging into assemblies and distributions, these have been extracted into separate projects under the organization.