This is an automated email from the ASF dual-hosted git repository. mck pushed a commit to branch 4.2.x in repository https://gitbox.apache.org/repos/asf/cassandra-java-driver.git
The following commit(s) were added to refs/heads/4.2.x by this push: new 59ca049bd Mark spotbugs-annotation and jcip-annotations as provided dependencies [4.2.x branch] 59ca049bd is described below commit 59ca049bdb3d245b98575ad501fc2b2ef9d02100 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.2.x branch] patch by Henry Hughes; reviewed by Mick Semb Wever for CASSANDRA-18969 --- core-shaded/pom.xml | 2 + core/pom.xml | 2 + {mapper-processor => distribution-tests}/pom.xml | 108 ++++++++------------- .../oss/driver/api/core/DriverDependencyTest.java | 64 ++++++++++++ .../driver/api/core/OptionalDependencyTest.java | 35 +++++++ .../driver/api/core/ProvidedDependencyTest.java | 45 +++++++++ examples/pom.xml | 7 +- integration-tests/pom.xml | 5 + manual/core/integration/README.md | 31 +++--- mapper-processor/pom.xml | 2 + mapper-runtime/pom.xml | 2 + pom.xml | 1 + query-builder/pom.xml | 2 + test-infra/pom.xml | 2 +- 14 files changed, 222 insertions(+), 86 deletions(-) diff --git a/core-shaded/pom.xml b/core-shaded/pom.xml index 5a8e15f9b..d3e5aee53 100644 --- a/core-shaded/pom.xml +++ b/core-shaded/pom.xml @@ -89,10 +89,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 03f5a0467..900f85379 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -86,10 +86,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>ch.qos.logback</groupId> diff --git a/mapper-processor/pom.xml b/distribution-tests/pom.xml similarity index 51% copy from mapper-processor/pom.xml copy to distribution-tests/pom.xml index 7f80459f0..cae245e89 100644 --- a/mapper-processor/pom.xml +++ b/distribution-tests/pom.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one @@ -19,105 +20,59 @@ --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <parent> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-parent</artifactId> <version>4.2.3-SNAPSHOT</version> </parent> - - <artifactId>java-driver-mapper-processor</artifactId> - <name>Apache Cassandra Java Driver - object mapper processor</name> + <artifactId>java-driver-distribution-tests</artifactId> + <name>Apache Cassandra Java Driver - distribution tests</name> <dependencies> <dependency> <groupId>com.datastax.oss</groupId> - <artifactId>java-driver-mapper-runtime</artifactId> - <version>${project.version}</version> + <artifactId>java-driver-test-infra</artifactId> + <version>${project.parent.version}</version> + <scope>test</scope> </dependency> <dependency> <groupId>com.datastax.oss</groupId> - <artifactId>java-driver-shaded-guava</artifactId> - </dependency> - <dependency> - <groupId>com.squareup</groupId> - <artifactId>javapoet</artifactId> - </dependency> - <dependency> - <groupId>com.github.stephenc.jcip</groupId> - <artifactId>jcip-annotations</artifactId> - </dependency> - <dependency> - <groupId>com.github.spotbugs</groupId> - <artifactId>spotbugs-annotations</artifactId> - </dependency> - <dependency> - <groupId>com.google.testing.compile</groupId> - <artifactId>compile-testing</artifactId> + <artifactId>java-driver-query-builder</artifactId> + <version>${project.parent.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> + <groupId>com.datastax.oss</groupId> + <artifactId>java-driver-mapper-processor</artifactId> + <version>${project.parent.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> + <groupId>com.datastax.oss</groupId> + <artifactId>java-driver-mapper-runtime</artifactId> + <version>${project.parent.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>com.tngtech.java</groupId> - <artifactId>junit-dataprovider</artifactId> + <groupId>com.datastax.oss</groupId> + <artifactId>java-driver-core</artifactId> + <version>${project.parent.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> + <groupId>junit</groupId> + <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> - <build> <plugins> <plugin> - <artifactId>maven-compiler-plugin</artifactId> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> <configuration> - <proc>none</proc> + <threadCount>1</threadCount> </configuration> </plugin> - <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> - <execution> - <id>test-jar</id> - <goals> - <goal>test-jar</goal> - </goals> - <configuration> - <excludes> - <exclude>logback-test.xml</exclude> - </excludes> - </configuration> - </execution> - </executions> - </plugin> <plugin> <groupId>org.revapi</groupId> <artifactId>revapi-maven-plugin</artifactId> @@ -125,6 +80,25 @@ <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..2c4a22f45 --- /dev/null +++ b/distribution-tests/src/test/java/com/datastax/oss/driver/api/core/DriverDependencyTest.java @@ -0,0 +1,64 @@ +/* + * 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 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_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..241e8078b --- /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.Reflection; +import org.junit.Test; + +public class OptionalDependencyTest { + @Test + public void should_not_include_snappy_jar() { + assertThat(Reflection.loadClass(null, "org.xerial.snappy.Snappy")).isNull(); + } + + @Test + public void should_not_include_l4z_jar() { + assertThat(Reflection.loadClass(null, "net.jpountz.lz4.LZ4Factory")).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 04c79128c..ac40a824d 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -152,6 +152,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> @@ -212,4 +217,4 @@ </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index d88111496..327594d70 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -62,6 +62,11 @@ <version>${project.parent.version}</version> <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 a9a6a5c9e..1e52250e7 100644 --- a/manual/core/integration/README.md +++ b/manual/core/integration/README.md @@ -362,25 +362,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 7f80459f0..7d11e6848 100644 --- a/mapper-processor/pom.xml +++ b/mapper-processor/pom.xml @@ -45,10 +45,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 d27b0b460..fa9a93ce6 100644 --- a/mapper-runtime/pom.xml +++ b/mapper-runtime/pom.xml @@ -43,10 +43,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/pom.xml b/pom.xml index 59c5752dd..d394c57cc 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,7 @@ <module>test-infra</module> <module>integration-tests</module> <module>distribution</module> + <module>distribution-tests</module> <module>examples</module> </modules> diff --git a/query-builder/pom.xml b/query-builder/pom.xml index 7edd48d58..8b6c836c4 100644 --- a/query-builder/pom.xml +++ b/query-builder/pom.xml @@ -42,10 +42,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 edee24f5f..0e4fd07a2 100644 --- a/test-infra/pom.xml +++ b/test-infra/pom.xml @@ -38,7 +38,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