This is a Maven Archetype project that can be used to bootstrap a simple Maven project featuring the Java Drivers for Cassandra. To build this project, simple run a Maven install:
mvn clean install
This will install the archetype locally so you can then use it to create a bootstrap project.
If you are looking to create a bootstrapped project, you can skip down to Creating a Bootstrap project
The archetype-metadata.xml conforms to the Maven Archetype Descriptor Model. It defines
properties that must be set to generate a bootstrapped project as well as file set rules that control
how source files are generated. The file must live in src/main/resources/META-INF/maven of this
project.
All of the source and resource files to be generated into the bootstrapped project need to be
located in src/main/resources/archetype-resources directory of this project. A template of the
generated pom.xml is located in this directory, as well as a basic README.md. Any other files that
should be copied into the root of the generated project should be placed here. Adding files here
will require updates to archetype-metadata.xml to ensure they are explicitly listed in the
<fileSet> that is copied during project generation.
Additionally in archetype-resources is a template Maven multi-module project directory structure:
archetype-resources/__rootArtifactId__-core
archetype-resources/__rootArtifactId__-cql
archetype-resources/__rootArtifactId__-web
The __rootArtifactId__ template will be replaced by the artifactId value chosed when the
archetype:generate goal is executed (example: myArtifact-core). Each of the directories above
will have the typical module directroy structure:
archetype-resources/__rootArtifactId__-core/src/main/java
archetype-resources/__rootArtifactId__-core/src/main/resources
archetype-resources/__rootArtifactId__-core/src/test/java
archetype-resources/__rootArtifactId__-core/src/test/resources
The only difference is that the Java source and test class files are not in packaged subdirectories,
they are flattened into the java directories. This is because the archetype:generate goal will
copy those sources, substituting any Velocity properties with values provided, into the desired
package structure, based on the value provided for the package property. See
Archetype Properties for more on the package property.
Generating the bootstrap project requires some properties to be set. Some properties have default values and do not need to be specified. All properties can be provided on the command-line used to generate the project, and all can be modified interactively after executing the generate command.
The following properties are used during the bootstrap project generation. They can be specified when executing the generate command, or in interactive mode during bootstrap project generation:
| Property | Default | Example | Description |
|---|---|---|---|
| groupId | <no default> | com.mycompany.group | Sets the Maven groupId value in the pom.xml of the bootstrapped project |
| artifactId | <no default> | myArtifact | Sets the Maven 'artifactId' value in the pom.xml of the bootstrapped project |
| version | 1.0-SNAPSHOT | 1.2.3 | Sets the Maven version value in the pom.xml of the bootstrapped project |
| package | <groupId value> | com.mycompany.poc | Controls the base package for all generated source code |
| java-driver-version | [4.0.0-beta1,) | 4.0.0 | The Java Driver version to use (NOTE: only 4.x and newer versions are supported) |
| cassandra-host | 127.0.0.1 | 10.10.1.16 | The host or IP address of the Cassandra instance to which to connect |
| cassandra-port | 9042 | 9042 | The port to use for the Cassandra connection |
| datacenter | datacenter1 | datacenter1 | The name of the local datacenter |
| logging | logback-classic | log4j | The SLF4J logging implementation to use (NOTE: only logback-classic or log4j are supported) |
mvn archetype:generate -DarchetypeGroupId=com.datastax.oss -DarchetypeArtifactId=java-driver-archetype
The above will generate the bootstrap project, but you will have to provide values for any required
properties that have no default, including groupId, artifactId, version and package. These
values are used to setup your bootstrap project pom.xml and generate source code in the desired
package.
mvn archetype:generate -DarchetypeGroupId=com.datastax.oss -DarchetypeArtifactId=java-driver-archetype -Dversion=1.0.0-SNAPSHOT -DgroupId=com.mycompany.group -DartifactId=myArtifact -Dpackage=com.mycompany.poc -Dcassandra-host=127.0.0.1 -Dcassandra-port=9042 -Ddatacenter=datacenter1 -Djava-driver-version="[4.0.0-beta1,)" -Dlogging=logback-classic
The above will generate a project with all properties set, though you can still override them interactively.
Regardless of how you execute the command, you will get a confirmation dialog with all the property
values shown. If you are happy with what you see, simply hit enter to proceed. If you wish to
change any of the values, type in N and hit enter to start the interactive edit of the values.
[INFO] Archetype [com.datastax.oss:java-driver-archetype:4.0.0-SNAPSHOT] found in catalog local
Downloading from datastax-artifactory: https://repo.datastax.com/dse/com/datastax/oss/java-driver-archetype/4.0.0-SNAPSHOT/maven-metadata.xml
[INFO] Using property: groupId = com.mycompany.group
[INFO] Using property: artifactId = myArtifact
[INFO] Using property: version = 1.0.0-SNAPSHOT
[INFO] Using property: package = com.mycompany.poc
[INFO] Using property: cassandra-host = 127.0.0.1
[INFO] Using property: cassandra-port = 9042
[INFO] Using property: datacenter = datacenter1
[INFO] Using property: java-driver-version = [4.0.0-beta1,)
[INFO] Using property: logging = logback-classic
Confirm properties configuration:
groupId: com.mycompany.group
artifactId: myArtifact
version: 1.0.0-SNAPSHOT
package: com.mycompany.poc
cassandra-host: 127.0.0.1
cassandra-port: 9042
datacenter: datacenter1
java-driver-version: [4.0.0-beta1,)
logging: logback-classic
Y: :
Once you complete the archetype generation, you should have a simple Maven project using the latest
4.x Java Driver in a sub-directory named the same as the artifactId you provided, in the current
working directory. Change into that directory and execute the following:
mvn clean install
mvn compile exec:java -Dexec.mainClass=com.mycompany.poc.Main -pl myArtifact-cql
This should produce output similar to:
15:57:32.944 [com.mycompany.poc.Main.main()] INFO c.d.o.d.i.c.DefaultMavenCoordinates - DataStax Java driver for Apache Cassandra(R) (com.datastax.oss:java-driver-core) version 4.0.0-beta1-SNAPSHOT
15:57:33.200 [myArtifact-admin-0] INFO c.d.o.d.internal.core.time.Clock - Using native clock for microsecond precision
15:57:33.431 [com.mycompany.poc.Main.main()] INFO com.mycompany.poc.Main - Cassandra release version: 3.11.3