|
| 1 | += Creating a Project |
| 2 | + |
| 3 | +== Mapping to aiSSEMBLE(TM) Concepts |
| 4 | +[#img-you-are-here-archetype] |
| 5 | +.xref:solution-baseline-process.adoc[You Are Here] |
| 6 | +image::you-are-here-archetype.png[You Are Here,200,100,role="thumb right"] |
| 7 | + |
| 8 | +_Step 1: Instantiate a New aiSSEMBLE Project:_ The aiSSEMBLE archetype is an executable pattern that can quickly incept |
| 9 | +a project that is ready to leverage aiSSEMBLE for constructing components tailored to your needs. It is realized below |
| 10 | +using a Maven archetype feature. |
| 11 | + |
| 12 | +== Use a Maven Archetype to Create a New Project |
| 13 | +The first step in creating a new project is to leverage Maven's archetype functionality to incept a new Maven project |
| 14 | +that will contain all of your aiSSEMBLE component implementations - data delivery and machine learning pipelines as well as |
| 15 | +path to production modules. |
| 16 | + |
| 17 | +Open a terminal to the location in which you want your project to live and execute the following command: |
| 18 | +[source] |
| 19 | +[subs=attributes+] |
| 20 | + |
| 21 | +ifeval::[{is-pre-release} == true] |
| 22 | +-- |
| 23 | +mvn archetype:generate \ |
| 24 | + -DarchetypeGroupId=com.boozallen.aissemble \ |
| 25 | + -DarchetypeArtifactId=foundation-archetype \ |
| 26 | + -DarchetypeVersion={page-version}-SNAPSHOT |
| 27 | +-- |
| 28 | +endif::[] |
| 29 | + |
| 30 | +ifeval::[{is-pre-release} != true] |
| 31 | +-- |
| 32 | +mvn archetype:generate \ |
| 33 | + -DarchetypeGroupId=com.boozallen.aissemble \ |
| 34 | + -DarchetypeArtifactId=foundation-archetype \ |
| 35 | + -DarchetypeVersion={page-version} |
| 36 | +-- |
| 37 | +endif::[] |
| 38 | + |
| 39 | +This command will trigger an interactive questionnaire giving you the opportunity to enter the following information |
| 40 | +(in alphabetical order) except if the option is not interactive (see table). For those options that are not interactive, they must be supplied to the ``mvn |
| 41 | +archetype:generate`` command by using the following format ``-D<propertyName>=<propertyValue>``. For those options that are interactive, |
| 42 | +there is also an option to supply the values in the same way. |
| 43 | + |
| 44 | +.Archetype Options |
| 45 | +[cols="1a,2a,3a,2a,5a"] |
| 46 | +|=== |
| 47 | +| Value | Description | Guidance | Example(s) | Interactive |
| 48 | + |
| 49 | +| ``archetypeVersion`` |
| 50 | +| Use an archetype from a specific aiSSEMBLE release |
| 51 | +| |
| 52 | +Typically, developers should target the most recently released archetype. In appropriate circumstances, it is possible to target a pre-release https://maven.apache.org/guides/getting-started/index.html#what-is-a-snapshot-version[snapshot version,role=external,window=_blank] by using the -SNAPSHOT suffix. |
| 53 | + |
| 54 | +| |
| 55 | +* 0.11.0 |
| 56 | +* 0.9.8 |
| 57 | +* 0.12.0-SNAPSHOT |
| 58 | +| No |
| 59 | + |
| 60 | +| ``artifactId`` |
| 61 | +| The folder name as well as module name of your project root |
| 62 | +| A generic description of the project or set of pipelines that will be included in the project. Maven conventions |
| 63 | +suggest the use of a dash to separate terms. |
| 64 | +| |
| 65 | +* ``payment-analytics`` |
| 66 | +* ``charge-off-prediction`` |
| 67 | +* ``rdec`` (example of a project acronym) |
| 68 | +| Yes |
| 69 | + |
| 70 | +| ``groupId`` |
| 71 | +| The namespace in which your Maven modules will live |
| 72 | +| In general, you want it to think about ``groupId`` like the notional reverse ordered internet address of your effort. |
| 73 | +General pattern: ``<internet domain name in reverse>.<your area name>`` |
| 74 | + |
| 75 | +| Examples: |
| 76 | + |
| 77 | +* ``com.boozallen.aissemble`` |
| 78 | +* ``mil.navy.blueangles.ridealong`` |
| 79 | + |
| 80 | +| Yes |
| 81 | + |
| 82 | +| ``package`` |
| 83 | +| The package name in which JVM-based source code will be placed |
| 84 | +| Defaults to your ``groupId`` value, which is almost always the right decision, so just select enter to accept this |
| 85 | +default |
| 86 | +| See ``groupId`` examples above |
| 87 | +| Yes |
| 88 | + |
| 89 | +| ``projectDescription`` |
| 90 | +| General description of your project |
| 91 | +| Default to "Project that contains aiSSEMBLE compliant pipeline(s)" |
| 92 | +| |
| 93 | +| No |
| 94 | + |
| 95 | +| ``licenseName`` |
| 96 | +| The name of the license to use in the project |
| 97 | +| Defaults to Booz Allen's "closed-source-license" but can be updated to a |
| 98 | +https://github.com/boozallen/booz-allen-maven-licenses[Booz Allen license,role=external,window=_blank] or any license |
| 99 | +under mvn license:license-list |
| 100 | +| |
| 101 | +* booz-allen-public-license |
| 102 | +* agpl_v3 |
| 103 | + |
| 104 | +| No |
| 105 | + |
| 106 | +| ``projectGitUrl`` |
| 107 | +| The git URL of the project |
| 108 | +| The git URL of the project, without the `.git` suffix |
| 109 | +| |
| 110 | + |
| 111 | + |
| 112 | +| Yes |
| 113 | + |
| 114 | +| ``projectName`` |
| 115 | +| A short, human-readable version name of the project |
| 116 | +| The human readable version of your ``artifactId`` |
| 117 | +| |
| 118 | + |
| 119 | +* aiSSEMBLE |
| 120 | +* NAVY BA Ride Along |
| 121 | + |
| 122 | +| Yes |
| 123 | + |
| 124 | +| ``version`` |
| 125 | +| The name of the current version |
| 126 | +| Generally recommended to follow a ``<major version>.<minor version>.<patch version>`` convention. If you don't have a |
| 127 | +strong opinion, start at ``1.0.0-SNAPSHOT``. ``1.0.0-SNAPSHOT`` is the default when instantiating a new project. |
| 128 | + |
| 129 | +Maven has inherent support for "development" versions. This helps projects manage in flight versus released software. |
| 130 | +See <<_snapshot_versions,Snapshot Versions>> in the Additional Considerations section below for more information. Using |
| 131 | +https://github.com/TechnologyBrewery/habushu[Habushu,role=external,window=_blank], python modules are able to easily |
| 132 | +and automatically follow this Snapshot pattern as well (where ``-SNAPSHOT`` will be inferred to ``.dev``. |
| 133 | +| |
| 134 | +* ``1.0.0-SNAPSHOT`` |
| 135 | +* ``1.1.0-SNAPSHOT`` |
| 136 | + |
| 137 | +| No |
| 138 | + |
| 139 | +|=== |
| 140 | + |
| 141 | +Once you enter these values, the archetype will ask you to confirm your entries. You now have a Maven project in which |
| 142 | +you can setup your specific pipelines, as described in the next step. |
0 commit comments