This is an automated email from the ASF dual-hosted git repository.
mck pushed a commit to branch 4.12.x
in repository https://gitbox.apache.org/repos/asf/cassandra-java-driver.git
The following commit(s) were added to refs/heads/4.12.x by this push:
new d71dd429c Mark spotbugs-annotation and jcip-annotations as provided
dependencies [4.12.x branch]
d71dd429c is described below
commit d71dd429c37572e380bcc041ff3b7a2f1d09c240
Author: Henry Hughes <[email protected]>
AuthorDate: Wed Nov 1 12:50:18 2023 -0700
Mark spotbugs-annotation and jcip-annotations as provided dependencies
[4.12.x branch]
patch by Henry Hughes; reviewed by Mick Semb Wever for CASSANDRA-18969
---
core-shaded/pom.xml | 2 +
core/pom.xml | 2 +
{metrics/micrometer => distribution-tests}/pom.xml | 94 ++++++++++------------
.../oss/driver/api/core/DriverDependencyTest.java | 84 +++++++++++++++++++
.../driver/api/core/OptionalDependencyTest.java | 47 +++++++++++
.../driver/api/core/ProvidedDependencyTest.java | 45 +++++++++++
examples/pom.xml | 5 ++
integration-tests/pom.xml | 5 ++
manual/core/integration/README.md | 31 ++++---
mapper-processor/pom.xml | 2 +
mapper-runtime/pom.xml | 2 +
metrics/micrometer/pom.xml | 10 +++
metrics/microprofile/pom.xml | 10 +++
osgi-tests/pom.xml | 6 ++
pom.xml | 1 +
query-builder/pom.xml | 2 +
test-infra/pom.xml | 2 +-
17 files changed, 281 insertions(+), 69 deletions(-)
diff --git a/core-shaded/pom.xml b/core-shaded/pom.xml
index f76cc01e5..bbd8900ae 100644
--- a/core-shaded/pom.xml
+++ b/core-shaded/pom.xml
@@ -107,10 +107,12 @@
<dependency>
<groupId>com.github.stephenc.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
</dependencies>
<!--
diff --git a/core/pom.xml b/core/pom.xml
index ce6b54f40..c08c4de9d 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -118,10 +118,12 @@
<dependency>
<groupId>com.github.stephenc.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.graalvm.sdk</groupId>
diff --git a/metrics/micrometer/pom.xml b/distribution-tests/pom.xml
similarity index 59%
copy from metrics/micrometer/pom.xml
copy to distribution-tests/pom.xml
index 00db2e1ed..a065bdb17 100644
--- a/metrics/micrometer/pom.xml
+++ b/distribution-tests/pom.xml
@@ -24,11 +24,9 @@
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-parent</artifactId>
<version>4.12.2-SNAPSHOT</version>
- <relativePath>../../</relativePath>
</parent>
- <artifactId>java-driver-metrics-micrometer</artifactId>
- <packaging>bundle</packaging>
- <name>Apache Cassandra Java Driver - Metrics - Micrometer</name>
+ <artifactId>java-driver-distribution-tests</artifactId>
+ <name>Apache Cassandra Java Driver - distribution tests</name>
<dependencyManagement>
<dependencies>
<dependency>
@@ -42,87 +40,81 @@
</dependencyManagement>
<dependencies>
<dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-core</artifactId>
+ <groupId>com.datastax.oss</groupId>
+ <artifactId>java-driver-test-infra</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>com.datastax.oss</groupId>
- <artifactId>java-driver-core</artifactId>
- <exclusions>
- <exclusion>
- <groupId>io.dropwizard.metrics</groupId>
- <artifactId>metrics-core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.hdrhistogram</groupId>
- <artifactId>HdrHistogram</artifactId>
- </exclusion>
- </exclusions>
+ <artifactId>java-driver-query-builder</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
+ <groupId>com.datastax.oss</groupId>
+ <artifactId>java-driver-mapper-processor</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
+ <groupId>com.datastax.oss</groupId>
+ <artifactId>java-driver-mapper-runtime</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.tngtech.java</groupId>
- <artifactId>junit-dataprovider</artifactId>
+ <groupId>com.datastax.oss</groupId>
+ <artifactId>java-driver-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
+ <groupId>com.datastax.oss</groupId>
+ <artifactId>java-driver-metrics-micrometer</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
+ <groupId>com.datastax.oss</groupId>
+ <artifactId>java-driver-metrics-microprofile</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.datastax.oss</groupId>
- <artifactId>java-driver-core</artifactId>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
<scope>test</scope>
- <type>test-jar</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <!--
- This module only has internal classes, yet we need a javadoc JAR
to pass Maven central
- validation rules.
- -->
- <execution>
- <id>javadoc-jar</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <classifier>javadoc</classifier>
- <excludes>
- <exclude>**</exclude>
- </excludes>
- </configuration>
- </execution>
- </executions>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <threadCount>1</threadCount>
+ </configuration>
</plugin>
<plugin>
<groupId>org.revapi</groupId>
<artifactId>revapi-maven-plugin</artifactId>
<configuration>
- <!-- This module doesn't have any non-internal classes, so we can
simply skip revapi -->
<skip>true</skip>
</configuration>
</plugin>
+ <plugin>
+ <artifactId>maven-install-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.plugins</groupId>
+ <artifactId>nexus-staging-maven-plugin</artifactId>
+ <configuration>
+ <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git
a/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/DriverDependencyTest.java
b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/DriverDependencyTest.java
new file mode 100644
index 000000000..16952e3d7
--- /dev/null
+++
b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/DriverDependencyTest.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datastax.oss.driver.api.core;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.datastax.oss.driver.api.core.session.Session;
+import com.datastax.oss.driver.api.mapper.MapperBuilder;
+import com.datastax.oss.driver.api.querybuilder.QueryBuilder;
+import com.datastax.oss.driver.api.testinfra.CassandraResourceRule;
+import com.datastax.oss.driver.internal.core.util.Reflection;
+import com.datastax.oss.driver.internal.mapper.processor.MapperProcessor;
+import
com.datastax.oss.driver.internal.metrics.micrometer.MicrometerMetricsFactory;
+import
com.datastax.oss.driver.internal.metrics.microprofile.MicroProfileMetricsFactory;
+import org.junit.Test;
+
+public class DriverDependencyTest {
+ @Test
+ public void should_include_core_jar() {
+ assertThat(Reflection.loadClass(null,
"com.datastax.oss.driver.api.core.session.Session"))
+ .isEqualTo(Session.class);
+ }
+
+ @Test
+ public void should_include_query_builder_jar() {
+ assertThat(Reflection.loadClass(null,
"com.datastax.oss.driver.api.querybuilder.QueryBuilder"))
+ .isEqualTo(QueryBuilder.class);
+ }
+
+ @Test
+ public void should_include_mapper_processor_jar() {
+ assertThat(
+ Reflection.loadClass(
+ null,
"com.datastax.oss.driver.internal.mapper.processor.MapperProcessor"))
+ .isEqualTo(MapperProcessor.class);
+ }
+
+ @Test
+ public void should_include_mapper_runtime_jar() {
+ assertThat(Reflection.loadClass(null,
"com.datastax.oss.driver.api.mapper.MapperBuilder"))
+ .isEqualTo(MapperBuilder.class);
+ }
+
+ @Test
+ public void should_include_metrics_micrometer_jar() {
+ assertThat(
+ Reflection.loadClass(
+ null,
+
"com.datastax.oss.driver.internal.metrics.micrometer.MicrometerMetricsFactory"))
+ .isEqualTo(MicrometerMetricsFactory.class);
+ }
+
+ @Test
+ public void should_include_metrics_microprofile_jar() {
+ assertThat(
+ Reflection.loadClass(
+ null,
+
"com.datastax.oss.driver.internal.metrics.microprofile.MicroProfileMetricsFactory"))
+ .isEqualTo(MicroProfileMetricsFactory.class);
+ }
+
+ @Test
+ public void should_include_test_infra_jar() {
+ assertThat(
+ Reflection.loadClass(
+ null,
"com.datastax.oss.driver.api.testinfra.CassandraResourceRule"))
+ .isEqualTo(CassandraResourceRule.class);
+ }
+}
diff --git
a/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/OptionalDependencyTest.java
b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/OptionalDependencyTest.java
new file mode 100644
index 000000000..a09c429f4
--- /dev/null
+++
b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/OptionalDependencyTest.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datastax.oss.driver.api.core;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.datastax.oss.driver.internal.core.util.Dependency;
+import com.datastax.oss.driver.internal.core.util.Reflection;
+import org.junit.Test;
+
+public class OptionalDependencyTest {
+ @Test
+ public void should_not_include_snappy_jar() {
+ Dependency.SNAPPY
+ .classes()
+ .forEach(clazz -> assertThat(Reflection.loadClass(null,
clazz)).isNull());
+ }
+
+ @Test
+ public void should_not_include_l4z_jar() {
+ Dependency.LZ4
+ .classes()
+ .forEach(clazz -> assertThat(Reflection.loadClass(null,
clazz)).isNull());
+ }
+
+ @Test
+ public void should_not_include_tinkerpop_jar() {
+ Dependency.TINKERPOP
+ .classes()
+ .forEach(clazz -> assertThat(Reflection.loadClass(null,
clazz)).isNull());
+ }
+}
diff --git
a/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/ProvidedDependencyTest.java
b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/ProvidedDependencyTest.java
new file mode 100644
index 000000000..1070bbc2f
--- /dev/null
+++
b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/ProvidedDependencyTest.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datastax.oss.driver.api.core;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.datastax.oss.driver.internal.core.util.Reflection;
+import org.junit.Test;
+
+public class ProvidedDependencyTest {
+ @Test
+ public void should_not_include_graal_sdk_jar() {
+ assertThat(Reflection.loadClass(null,
"org.graalvm.nativeimage.VMRuntime")).isNull();
+ }
+
+ @Test
+ public void should_not_include_spotbugs_annotations_jar() {
+ assertThat(Reflection.loadClass(null,
"edu.umd.cs.findbugs.annotations.NonNull")).isNull();
+ }
+
+ @Test
+ public void should_not_include_jicp_annotations_jar() {
+ assertThat(Reflection.loadClass(null,
"net.jcip.annotations.ThreadSafe")).isNull();
+ }
+
+ @Test
+ public void should_not_include_blockhound_jar() {
+ assertThat(Reflection.loadClass(null,
"reactor.blockhound.BlockHoundRuntime")).isNull();
+ }
+}
diff --git a/examples/pom.xml b/examples/pom.xml
index ad1aeeca6..1ec8d2bf3 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -142,6 +142,11 @@
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 1b8b1c957..e62da1e9c 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -83,6 +83,11 @@
<artifactId>java-driver-metrics-microprofile</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.github.stephenc.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
diff --git a/manual/core/integration/README.md
b/manual/core/integration/README.md
index a6b763c28..c17d88eb7 100644
--- a/manual/core/integration/README.md
+++ b/manual/core/integration/README.md
@@ -585,25 +585,22 @@ The driver team uses annotations to document certain
aspects of the code:
* nullability with [SpotBugs](https://spotbugs.github.io/) annotations
`@Nullable` and `@NonNull`.
This is mostly used during development; while these annotations are retained
in class files, they
-serve no purpose at runtime. If you want to minimize the number of JARs in
your classpath, you can
-exclude them:
+serve no purpose at runtime. This class is an optional dependency of the
driver. If you wish to
+make use of these annotations in your own code you have to explicitly depend
on these jars:
```xml
-<dependency>
- <groupId>com.datastax.oss</groupId>
- <artifactId>java-driver-core</artifactId>
- <version>${driver.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.github.stephenc.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.github.spotbugs</groupId>
- <artifactId>spotbugs-annotations</artifactId>
- </exclusion>
- </exclusions>
-</dependency>
+<dependencies>
+ <dependency>
+ <groupId>com.github.stephenc.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ <version>1.0-1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-annotations</artifactId>
+ <version>3.1.12</version>
+ </dependency>
+</dependencies>
```
However, there is one case when excluding those dependencies won't work: if
you use [annotation
diff --git a/mapper-processor/pom.xml b/mapper-processor/pom.xml
index 504a12195..8cab0c8da 100644
--- a/mapper-processor/pom.xml
+++ b/mapper-processor/pom.xml
@@ -54,10 +54,12 @@
<dependency>
<groupId>com.github.stephenc.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.testing.compile</groupId>
diff --git a/mapper-runtime/pom.xml b/mapper-runtime/pom.xml
index 03efec04f..fd5c26d9c 100644
--- a/mapper-runtime/pom.xml
+++ b/mapper-runtime/pom.xml
@@ -51,10 +51,12 @@
<dependency>
<groupId>com.github.stephenc.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
diff --git a/metrics/micrometer/pom.xml b/metrics/micrometer/pom.xml
index 00db2e1ed..4269ba707 100644
--- a/metrics/micrometer/pom.xml
+++ b/metrics/micrometer/pom.xml
@@ -59,6 +59,16 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.github.stephenc.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
diff --git a/metrics/microprofile/pom.xml b/metrics/microprofile/pom.xml
index c161b493e..4358a0da9 100644
--- a/metrics/microprofile/pom.xml
+++ b/metrics/microprofile/pom.xml
@@ -59,6 +59,16 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.github.stephenc.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-metrics</artifactId>
diff --git a/osgi-tests/pom.xml b/osgi-tests/pom.xml
index 4d7d76ac0..c07828d78 100644
--- a/osgi-tests/pom.xml
+++ b/osgi-tests/pom.xml
@@ -56,9 +56,15 @@
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-mapper-runtime</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.github.stephenc.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
diff --git a/pom.xml b/pom.xml
index 3fa48839a..6e0b2212b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,6 +39,7 @@
<module>integration-tests</module>
<module>osgi-tests</module>
<module>distribution</module>
+ <module>distribution-tests</module>
<module>examples</module>
<module>bom</module>
</modules>
diff --git a/query-builder/pom.xml b/query-builder/pom.xml
index 9a38a5b78..6110e2736 100644
--- a/query-builder/pom.xml
+++ b/query-builder/pom.xml
@@ -51,10 +51,12 @@
<dependency>
<groupId>com.github.stephenc.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
diff --git a/test-infra/pom.xml b/test-infra/pom.xml
index 6b49f00f9..ddb7bfb13 100644
--- a/test-infra/pom.xml
+++ b/test-infra/pom.xml
@@ -48,7 +48,7 @@
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
- <optional>true</optional>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]