This is an automated email from the ASF dual-hosted git repository. mck pushed a commit to branch 4.8.0_fixes in repository https://gitbox.apache.org/repos/asf/cassandra-java-driver.git
The following commit(s) were added to refs/heads/4.8.0_fixes by this push: new 8f44b6d61 Mark spotbugs-annotation and jcip-annotations as provided dependencies [4.8.0_fixes branch] 8f44b6d61 is described below commit 8f44b6d61ef04c2dd6767f39b2f386175fbeb92a Author: Henry Hughes <henry.hug...@datastax.com> AuthorDate: Wed Nov 1 12:50:18 2023 -0700 Mark spotbugs-annotation and jcip-annotations as provided dependencies [4.8.0_fixes 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 | 90 +++++++++++----------- .../oss/driver/api/core/DriverDependencyTest.java | 84 ++++++++++++++++++++ .../driver/api/core/OptionalDependencyTest.java | 35 +++++++++ .../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, 269 insertions(+), 65 deletions(-) diff --git a/core-shaded/pom.xml b/core-shaded/pom.xml index 57edc74fc..779bb8ff5 100644 --- a/core-shaded/pom.xml +++ b/core-shaded/pom.xml @@ -109,10 +109,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 01f5a5ded..99609faa7 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -120,10 +120,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 61% copy from metrics/micrometer/pom.xml copy to distribution-tests/pom.xml index febc99259..8be85f43f 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.9.0-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,83 +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> - </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..b37ae24bc --- /dev/null +++ b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/OptionalDependencyTest.java @@ -0,0 +1,35 @@ +/* + * 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.DependencyCheck; +import org.junit.Test; + +public class OptionalDependencyTest { + @Test + public void should_not_include_snappy_jar() { + assertThat(DependencyCheck.SNAPPY.isPresent()).isFalse(); + } + + @Test + public void should_not_include_l4z_jar() { + assertThat(DependencyCheck.LZ4.isPresent()).isFalse(); + } +} 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 4dc5aed58..ba58138f5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -137,6 +137,11 @@ <artifactId>bcrypt</artifactId> <version>0.8.0</version> </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 9feb9f2f5..6a0731162 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 523e46f3f..a282115c5 100644 --- a/manual/core/integration/README.md +++ b/manual/core/integration/README.md @@ -552,25 +552,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 2e3a1c018..430613481 100644 --- a/mapper-processor/pom.xml +++ b/mapper-processor/pom.xml @@ -68,10 +68,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 698a37f2b..981020321 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 febc99259..e997a9c1c 100644 --- a/metrics/micrometer/pom.xml +++ b/metrics/micrometer/pom.xml @@ -55,6 +55,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 b6dde61f9..629c8c668 100644 --- a/metrics/microprofile/pom.xml +++ b/metrics/microprofile/pom.xml @@ -55,6 +55,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/osgi-tests/pom.xml b/osgi-tests/pom.xml index 363787d1a..a3921082f 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 33ae2383c..d19ce6c76 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 60cefaba2..75c83d330 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 e974eff5e..bbb8fdeea 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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org