From f696dfaeeed1b4a2b6a9188fce57d8cca1c6d809 Mon Sep 17 00:00:00 2001 From: Michael Simons Date: Fri, 8 Oct 2021 14:37:24 +0200 Subject: [PATCH 1/2] Create a dedicated bundle / UberJAR module. This provides the driver UberJAR as it is known and used plus a slim deployment. It works by turning the previous main artifact into `neo4j-java-driver-slim` and the new bundle will be `neo4j-java-driver`. The bundle depends on the slim artifact, extracts it and attaches it during the build so that a valid JavaDoc artifact (and sources artifact) are created and than shades the rest into it as before. Care must be taken of the optional dependencies so that they are not included as well as the Reactive Streams API (so that it is a transitive dependency (the slim module is optional, otherwise the whole exercise would be in vain for downstream modules)). --- .../src/main => build}/javadoc/overview.html | 0 bundle/README.md | 4 + bundle/osgi.bnd | 11 + bundle/pom.xml | 189 ++++++++++++++++++ .../neo4j-java-driver/native-image.properties | 20 ++ .../neo4j-java-driver/reflection-config.json | 58 ++++++ driver/osgi.bnd | 4 +- driver/pom.xml | 126 +----------- .../neo4j-java-driver/native-image.properties | 28 +-- .../neo4j-java-driver/reflection-config.json | 112 +++++------ .../internal/async/NetworkConnectionTest.java | 4 +- .../driver/stress/AbstractStressTestBase.java | 4 +- examples/pom.xml | 3 +- pom.xml | 59 ++++++ testkit-backend/pom.xml | 2 +- 15 files changed, 425 insertions(+), 199 deletions(-) rename {driver/src/main => build}/javadoc/overview.html (100%) create mode 100644 bundle/README.md create mode 100644 bundle/osgi.bnd create mode 100644 bundle/pom.xml create mode 100644 bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties create mode 100644 bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json diff --git a/driver/src/main/javadoc/overview.html b/build/javadoc/overview.html similarity index 100% rename from driver/src/main/javadoc/overview.html rename to build/javadoc/overview.html diff --git a/bundle/README.md b/bundle/README.md new file mode 100644 index 0000000000..edece14490 --- /dev/null +++ b/bundle/README.md @@ -0,0 +1,4 @@ +Aggregator project for building the single JAR with shaded dependencies. + +This module aggregates the slim version, unpacks it and repackages it. +The sources are unpacked so that an individual JavaDoc artifact is produced, too. \ No newline at end of file diff --git a/bundle/osgi.bnd b/bundle/osgi.bnd new file mode 100644 index 0000000000..ecf3966e28 --- /dev/null +++ b/bundle/osgi.bnd @@ -0,0 +1,11 @@ +package-version=${version;===;${Bundle-Version}} + +Export-Package: \ + *;version="${package-version}" + +Import-Package: \ + !io.netty.*, \ + !reactor.core.*, \ + !com.oracle.svm.*, \ + javax.security.cert, \ + * diff --git a/bundle/pom.xml b/bundle/pom.xml new file mode 100644 index 0000000000..90d7a1cdd2 --- /dev/null +++ b/bundle/pom.xml @@ -0,0 +1,189 @@ + + 4.0.0 + + + org.neo4j.driver + neo4j-java-driver-parent + 4.4-SNAPSHOT + .. + + + neo4j-java-driver + + jar + Neo4j Java Driver + Access to the Neo4j graph database through Java + + + org.neo4j.driver + ${project.basedir}/.. + false + + + + + + org.neo4j.driver + neo4j-java-driver-slim + ${project.version} + true + + + + + org.slf4j + slf4j-api + true + + + org.graalvm.nativeimage + svm + + + + + org.reactivestreams + reactive-streams + + + + + + + + + + + maven-dependency-plugin + + + unpack-sources + generate-sources + + unpack-dependencies + + + + + sources + jar + ${project.build.directory}/generated-sources/slim + neo4j-java-driver-slim + **\/*.java + true + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-original-sources + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/slim + + + + + set-osgi-version + validate + + parse-version + + + + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + true + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + org/neo4j/driver + + + + ${project.version}-${build.revision} + + ${moduleName} + + + + + + org.apache.felix + maven-bundle-plugin + true + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + + + io.netty:* + io.projectreactor:* + + + + + io.netty + org.neo4j.driver.internal.shaded.io.netty + + + reactor + org.neo4j.driver.internal.shaded.reactor + + + + + + + + io.netty:* + + META-INF/native-image/** + + + + true + true + + + + + + + + diff --git a/bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties b/bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties new file mode 100644 index 0000000000..c2b3de8823 --- /dev/null +++ b/bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties @@ -0,0 +1,20 @@ +Args = -H:ReflectionConfigurationResources=${.}/reflection-config.json \ + --initialize-at-run-time=org.neo4j.driver.internal.async.connection.BoltProtocolUtil \ + --initialize-at-run-time=org.neo4j.driver.internal.async.connection.ChannelAttributes \ + --initialize-at-run-time=org.neo4j.driver.internal.async.connection.ChannelConnectedListener \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.AbstractReferenceCountedByteBuf \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.ByteBufAllocator \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.ByteBufUtil \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.ByteBufUtil$HexUtil \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.PooledByteBufAllocator \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.UnpooledHeapByteBuf \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.UnreleasableByteBuf \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.Conscrypt \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.ConscryptAlpnSslEngine \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.JdkNpnApplicationProtocolNegotiator \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.ReferenceCountedOpenSslEngine \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.util.ThreadLocalInsecureRandom \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.util.AbstractReferenceCounted \ + --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.util.internal.logging.Log4JLogger \ + -Dio.netty.noUnsafe=true \ + -Dio.netty.leakDetection.level=DISABLED diff --git a/bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json b/bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json new file mode 100644 index 0000000000..68572f10fb --- /dev/null +++ b/bundle/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json @@ -0,0 +1,58 @@ +[ + { + "name": "org.neo4j.driver.internal.shaded.io.netty.channel.socket.nio.NioSocketChannel", + "methods": [ + { "name": "", "parameterTypes": [] } + ] + }, + { + "name": "org.neo4j.driver.internal.shaded.io.netty.channel.socket.nio.NioServerSocketChannel", + "methods": [ + { "name": "", "parameterTypes": [] } + ] + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.buffer.AbstractByteBufAllocator", + "allDeclaredMethods" : true + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.util.ReferenceCountUtil", + "allDeclaredMethods" : true + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField", + "fields": [ + {"name": "producerIndex", "allowUnsafeAccess": true} + ] + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField", + "fields": [ + {"name": "producerLimit", "allowUnsafeAccess": true} + ] + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField", + "fields": [ + {"name": "consumerIndex", "allowUnsafeAccess": true} + ] + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields", + "fields": [ + {"name": "producerIndex", "allowUnsafeAccess": true} + ] + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields", + "fields": [ + {"name": "producerLimit", "allowUnsafeAccess": true} + ] + }, + { + "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields", + "fields": [ + {"name": "consumerIndex", "allowUnsafeAccess": true} + ] + } +] diff --git a/driver/osgi.bnd b/driver/osgi.bnd index 0d53b32ba0..8a0ac0d378 100644 --- a/driver/osgi.bnd +++ b/driver/osgi.bnd @@ -1,12 +1,10 @@ package-version=${version;===;${Bundle-Version}} Export-Package: \ + !*.internal.*, \ *;version="${package-version}" Import-Package: \ - !io.netty.*, \ - !reactor.core.*, \ !com.oracle.svm.*, \ javax.security.cert, \ * - diff --git a/driver/pom.xml b/driver/pom.xml index 7bd9ca1a63..6734429976 100644 --- a/driver/pom.xml +++ b/driver/pom.xml @@ -7,18 +7,15 @@ org.neo4j.driver neo4j-java-driver-parent 4.4-SNAPSHOT - .. - neo4j-java-driver + neo4j-java-driver-slim jar - Neo4j Java Driver + Neo4j Java Driver (Slim package) Access to the Neo4j graph database through Java - ${project.groupId}.${project.artifactId} - 'v'yyyyMMdd-HHmm org.neo4j.driver ${project.basedir}/.. false @@ -39,12 +36,16 @@ reactor-core - + org.slf4j slf4j-api true + + org.graalvm.nativeimage + svm + @@ -76,10 +77,6 @@ reactor-test test - - org.graalvm.nativeimage - svm - @@ -96,44 +93,10 @@ org.apache.maven.plugins maven-source-plugin - - - attach-sources - - jar - - - - - ${project.name} (Source) - ${bundle.name}.source - ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${build.timestamp} - ${bundle.name};version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${build.timestamp}";roots:="." - - - - - org.apache.maven.plugins maven-javadoc-plugin - - - org/neo4j/driver/**/*.java - - org.neo4j.driver.internal - - - if (typeof useModuleDirectories !== 'undefined') { - useModuleDirectories = false; - } - - ]]> - - --allow-script-in-comments - org.apache.maven.plugins @@ -178,85 +141,10 @@ org.apache.felix maven-bundle-plugin true - - - bundle-manifest - process-classes - - manifest - - - - - - ${bundle.name} - ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${build.timestamp} - <_snapshot>${maven.build.timestamp} - <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@))) - <_removeheaders>Bnd-*,Private-Package - <_nouses>true - - <_include>-osgi.bnd - - org.apache.maven.plugins maven-failsafe-plugin - - - ${project.build.directory}/classes - - - - org.apache.maven.plugins - maven-shade-plugin - - - package - - shade - - - - - io.netty:* - io.projectreactor:* - - - - - io.netty - org.neo4j.driver.internal.shaded.io.netty - - - reactor - org.neo4j.driver.internal.shaded.reactor - - - - - - - - io.netty:* - - META-INF/native-image/** - - - - true - true - - - diff --git a/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties b/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties index c2b3de8823..9d2171e945 100644 --- a/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties +++ b/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/native-image.properties @@ -2,19 +2,19 @@ Args = -H:ReflectionConfigurationResources=${.}/reflection-config.json \ --initialize-at-run-time=org.neo4j.driver.internal.async.connection.BoltProtocolUtil \ --initialize-at-run-time=org.neo4j.driver.internal.async.connection.ChannelAttributes \ --initialize-at-run-time=org.neo4j.driver.internal.async.connection.ChannelConnectedListener \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.AbstractReferenceCountedByteBuf \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.ByteBufAllocator \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.ByteBufUtil \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.ByteBufUtil$HexUtil \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.PooledByteBufAllocator \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.UnpooledHeapByteBuf \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.buffer.UnreleasableByteBuf \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.Conscrypt \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.ConscryptAlpnSslEngine \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.JdkNpnApplicationProtocolNegotiator \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.ReferenceCountedOpenSslEngine \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.handler.ssl.util.ThreadLocalInsecureRandom \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.util.AbstractReferenceCounted \ - --initialize-at-run-time=org.neo4j.driver.internal.shaded.io.netty.util.internal.logging.Log4JLogger \ + --initialize-at-run-time=io.netty.buffer.AbstractReferenceCountedByteBuf \ + --initialize-at-run-time=io.netty.buffer.ByteBufAllocator \ + --initialize-at-run-time=io.netty.buffer.ByteBufUtil \ + --initialize-at-run-time=io.netty.buffer.ByteBufUtil$HexUtil \ + --initialize-at-run-time=io.netty.buffer.PooledByteBufAllocator \ + --initialize-at-run-time=io.netty.buffer.UnpooledHeapByteBuf \ + --initialize-at-run-time=io.netty.buffer.UnreleasableByteBuf \ + --initialize-at-run-time=io.netty.handler.ssl.Conscrypt \ + --initialize-at-run-time=io.netty.handler.ssl.ConscryptAlpnSslEngine \ + --initialize-at-run-time=io.netty.handler.ssl.JdkNpnApplicationProtocolNegotiator \ + --initialize-at-run-time=io.netty.handler.ssl.ReferenceCountedOpenSslEngine \ + --initialize-at-run-time=io.netty.handler.ssl.util.ThreadLocalInsecureRandom \ + --initialize-at-run-time=io.netty.util.AbstractReferenceCounted \ + --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger \ -Dio.netty.noUnsafe=true \ -Dio.netty.leakDetection.level=DISABLED diff --git a/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json b/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json index 68572f10fb..d91092ea00 100644 --- a/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json +++ b/driver/src/main/resources/META-INF/native-image/org.neo4j.driver/neo4j-java-driver/reflection-config.json @@ -1,58 +1,58 @@ [ - { - "name": "org.neo4j.driver.internal.shaded.io.netty.channel.socket.nio.NioSocketChannel", - "methods": [ - { "name": "", "parameterTypes": [] } - ] - }, - { - "name": "org.neo4j.driver.internal.shaded.io.netty.channel.socket.nio.NioServerSocketChannel", - "methods": [ - { "name": "", "parameterTypes": [] } - ] - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.buffer.AbstractByteBufAllocator", - "allDeclaredMethods" : true - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.util.ReferenceCountUtil", - "allDeclaredMethods" : true - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField", - "fields": [ - {"name": "producerIndex", "allowUnsafeAccess": true} - ] - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField", - "fields": [ - {"name": "producerLimit", "allowUnsafeAccess": true} - ] - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField", - "fields": [ - {"name": "consumerIndex", "allowUnsafeAccess": true} - ] - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields", - "fields": [ - {"name": "producerIndex", "allowUnsafeAccess": true} - ] - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields", - "fields": [ - {"name": "producerLimit", "allowUnsafeAccess": true} - ] - }, - { - "name" : "org.neo4j.driver.internal.shaded.io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields", - "fields": [ - {"name": "consumerIndex", "allowUnsafeAccess": true} - ] - } + { + "name": "io.netty.channel.socket.nio.NioSocketChannel", + "methods": [ + { "name": "", "parameterTypes": [] } + ] + }, + { + "name": "io.netty.channel.socket.nio.NioServerSocketChannel", + "methods": [ + { "name": "", "parameterTypes": [] } + ] + }, + { + "name" : "io.netty.buffer.AbstractByteBufAllocator", + "allDeclaredMethods" : true + }, + { + "name" : "io.netty.util.ReferenceCountUtil", + "allDeclaredMethods" : true + }, + { + "name" : "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField", + "fields": [ + {"name": "producerIndex", "allowUnsafeAccess": true} + ] + }, + { + "name" : "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField", + "fields": [ + {"name": "producerLimit", "allowUnsafeAccess": true} + ] + }, + { + "name" : "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField", + "fields": [ + {"name": "consumerIndex", "allowUnsafeAccess": true} + ] + }, + { + "name" : "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields", + "fields": [ + {"name": "producerIndex", "allowUnsafeAccess": true} + ] + }, + { + "name" : "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields", + "fields": [ + {"name": "producerLimit", "allowUnsafeAccess": true} + ] + }, + { + "name" : "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields", + "fields": [ + {"name": "consumerIndex", "allowUnsafeAccess": true} + ] + } ] diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java index ff50cf5234..bcbcf33c16 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkConnectionTest.java @@ -22,7 +22,6 @@ import io.netty.channel.DefaultEventLoop; import io.netty.channel.EventLoop; import io.netty.channel.embedded.EmbeddedChannel; -import io.netty.util.internal.ConcurrentSet; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; @@ -30,6 +29,7 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -657,7 +657,7 @@ private static void assertConnectionTerminatedError( IllegalStateException e ) private static class ThreadTrackingInboundMessageDispatcher extends InboundMessageDispatcher { - final Set queueThreadNames = new ConcurrentSet<>(); + final Set queueThreadNames = ConcurrentHashMap.newKeySet(); ThreadTrackingInboundMessageDispatcher( Channel channel ) { super( channel, DEV_NULL_LOGGING ); diff --git a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java index 2b45b8cd5b..f807aa372a 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java @@ -18,7 +18,6 @@ */ package org.neo4j.driver.stress; -import io.netty.util.internal.ConcurrentSet; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -39,6 +38,7 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -749,7 +749,7 @@ private static class ResourcesInfo private static class LoggerNameTrackingLogging implements Logging { private final Logging consoleLogging = Logging.console( Level.FINE ); - private final Set acquiredLoggerNames = new ConcurrentSet<>(); + private final Set acquiredLoggerNames = ConcurrentHashMap.newKeySet(); @Override public Logger getLog( String name ) diff --git a/examples/pom.xml b/examples/pom.xml index db773854a6..45a3de0282 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -7,7 +7,6 @@ org.neo4j.driver neo4j-java-driver-parent 4.4-SNAPSHOT - .. org.neo4j.doc.driver @@ -40,7 +39,7 @@ org.neo4j.driver - neo4j-java-driver + neo4j-java-driver-slim ${project.version} test-jar test diff --git a/pom.xml b/pom.xml index 1e1b7ff038..75e001a8ed 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,10 @@ UTF-8 1.8 1.8 + 'v'yyyyMMdd-HHmm + + ${project.groupId}.${project.artifactId} + ${project.basedir} 1C @@ -46,10 +50,13 @@ 2.12.4 1.18.20 20.3.3 + + driver + bundle examples testkit-backend testkit-tests @@ -272,6 +279,24 @@ org.apache.maven.plugins maven-source-plugin 3.0.1 + + + attach-sources + + jar + + + + + ${project.name} (Source) + ${bundle.name}.source + ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${build.timestamp} + ${bundle.name};version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${build.timestamp}";roots:="." + + + + + org.apache.maven.plugins @@ -287,6 +312,26 @@ org.apache.felix maven-bundle-plugin 3.5.0 + + + bundle-manifest + process-classes + + manifest + + + + + + ${bundle.name} + ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${build.timestamp} + <_snapshot>${maven.build.timestamp} + <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@))) + <_removeheaders>Bnd-*,Private-Package + <_nouses>true + <_include>-osgi.bnd + + org.apache.maven.plugins @@ -360,8 +405,22 @@ ]]> + + + if (typeof useModuleDirectories !== 'undefined') { + useModuleDirectories = false; + } + + ]]> + --allow-script-in-comments + + org/neo4j/driver/**/*.java + + org.neo4j.driver.internal + ${rootDir}/build/javadoc/overview.html diff --git a/testkit-backend/pom.xml b/testkit-backend/pom.xml index e6a7f1a276..1419ea91c9 100644 --- a/testkit-backend/pom.xml +++ b/testkit-backend/pom.xml @@ -22,7 +22,7 @@ org.neo4j.driver - neo4j-java-driver + neo4j-java-driver-slim ${project.version} From 62a86fe0caffdb4f0179d14d19252f972a1d9ee9 Mon Sep 17 00:00:00 2001 From: Michael Simons Date: Mon, 18 Oct 2021 13:47:31 +0200 Subject: [PATCH 2/2] Replace unpack-deps with simple copy of resources. Unpack dependencies works when executed after packaging, which is not the case when running `mvn test`. --- bundle/pom.xml | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/bundle/pom.xml b/bundle/pom.xml index 90d7a1cdd2..528f655584 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -47,33 +47,32 @@ org.reactivestreams reactive-streams - - - - maven-dependency-plugin + maven-resources-plugin - unpack-sources + copy-appCtx generate-sources - unpack-dependencies + copy-resources + + ${project.build.directory}/generated-sources/slim + true + + + ${rootDir}/driver/src/main/java + **\/*.java + + + - - sources - jar - ${project.build.directory}/generated-sources/slim - neo4j-java-driver-slim - **\/*.java - true -