Creating a Project
Mapping to aiSSEMBLE™ Concepts

Step 1: Instantiate a New aiSSEMBLE Project: The aiSSEMBLE archetype is an executable pattern that can quickly incept a project that is ready to leverage aiSSEMBLE for constructing components tailored to your needs. It is realized below using a Maven archetype feature.
Use a Maven Archetype to Create a New Project
The first step in creating a new project is to leverage Maven’s archetype functionality to incept a new Maven project that will contain all of your aiSSEMBLE component implementations - data delivery and machine learning pipelines as well as path to production modules.
Open a terminal to the location in which you want your project to live and execute the following command:
mvn archetype:generate \
-DarchetypeGroupId=com.boozallen.aissemble \
-DarchetypeArtifactId=foundation-archetype \
-DarchetypeVersion=1.12.1
This command will trigger an interactive questionnaire giving you the opportunity to enter the following information contained in the below table.
-
This information can also be provided without interaction by including
-D<propertyName>=<propertyValue>
for each property you want to manually set when running themvn archetype:generate
command. -
Some of the information required (such as
archetypeVersion
) is unavailable in interactive mode. For these properties, you can use the above Maven command to include them.
Value | Description | Guidance | Example(s) | Interactive |
---|---|---|---|---|
|
Use an archetype from a specific aiSSEMBLE release |
Typically, developers should target the most recently released archetype. In appropriate circumstances, it is possible to target a pre-release snapshot version by using the -SNAPSHOT suffix. |
|
No |
|
The folder name as well as module name of your project root |
A generic description of the project or set of pipelines that will be included in the project. Maven conventions suggest the use of a dash to separate terms. |
|
Yes |
|
The name of the custom docker repository to use for this project. |
Should be specified and utilized with the fabric8 docker-maven-plugin to build and push docker images. Please see fabric8’s documentation on registry URLs. If not specified, this will default to |
|
No |
|
The namespace in which your Maven modules will live |
In general, you want it to think about |
Examples:
|
Yes |
|
The name of the license to use in the project |
Defaults to Booz Allen’s "closed-source-license" but can be updated to a Booz Allen license or any license under mvn license:license-list |
|
No |
|
The URL of the Maven repository where the release artifacts of the project will be deployed. |
Defaults to |
No |
|
|
The URL of the Maven repository where the snapshot artifacts of the project will be deployed. |
Defaults to |
No |
|
|
The package name in which JVM-based source code will be placed |
Defaults to your |
See |
Yes |
|
General description of your project |
Default to "Project that contains aiSSEMBLE compliant pipeline(s)" |
No |
|
|
The git URL of the project |
The git URL of the project, without the |
Yes |
|
|
A short, human-readable version name of the project |
The human readable version of your |
|
Yes |
|
The name of the current version |
Generally recommended to follow a Maven has inherent support for "development" versions. This helps projects manage in flight versus released software.
Using Habushu, python modules are able to
easily and automatically follow this Snapshot pattern as well (where |
|
No |
|
The name of the custom PyPI repository to use for this project. |
Should be used if you have Python modules and intend to publish your project’s PyPI artifacts to a private repository, such as Nexus or Artifactory. If you plan to use the public https://pypi.org repository, you can explicitly set that here as well. Please see Habushu’s documentation on repository URLs, including how to leverage If not specified, this will default to |
No |
|
|
The URL of the Helm repository you plan to publish your Helm charts to for this project. |
Should be used if you intend to publish your project’s Helm charts to a private repository, such as Nexus or ghcr.io. Please see helm-maven-plugin documentation, to view further configurations that can be set for your Helm repository specifications. If not specified, this will default to |
No |
|
|
The name of the Helm repository you plan to publish your Helm charts to for this project. |
Should be used if you intend to publish your project’s Helm charts to a private repository, such as Nexus or ghcr.io. Please see helm-maven-plugin documentation, to view further configurations that can be set for your Helm repository specifications.. If not specified, this will default to |
|
No |
Once you enter these values, the archetype will ask you to confirm your entries. You now have a Maven project in which you can setup your specific pipelines, as described in the next step.