testcontainers / testcontainers-java

Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
https://testcontainers.org
MIT License
8k stars 1.65k forks source link

[Bug]: maven source artifact does not contain sources from shaded artifacts #5682

Open asbachb opened 2 years ago

asbachb commented 2 years ago

Module

Core

Testcontainers version

1.17.3

Using the latest Testcontainers version?

Yes

Host OS

not related

Host Arch

not related

Docker version

not related

What happened?

The testcontainer maven source artifacts (e.g. https://repo1.maven.org/maven2/org/testcontainers/testcontainers/1.17.3/testcontainers-1.17.3-sources.jar) does not contain sources for shaded artifacts.

So any classes which are put into: org.testcontainers.shaded are missing.

Relevant log output

content of `testcontainers-1.17.3-sources.jar`:

./org
./org/testcontainers
./org/testcontainers/utility
./org/testcontainers/utility/RyukResourceReaper.java
./org/testcontainers/utility/LicenseAcceptance.java
./org/testcontainers/utility/Base58.java
./org/testcontainers/utility/TestcontainersConfiguration.java
./org/testcontainers/utility/JVMHookResourceReaper.java
./org/testcontainers/utility/DockerImageName.java
./org/testcontainers/utility/DefaultImageNameSubstitutor.java
./org/testcontainers/utility/LogUtils.java
./org/testcontainers/utility/DockerLoggerFactory.java
./org/testcontainers/utility/PathUtils.java
./org/testcontainers/utility/MountableFile.java
./org/testcontainers/utility/ClasspathScanner.java
./org/testcontainers/utility/CommandLine.java
./org/testcontainers/utility/ResourceReaper.java
./org/testcontainers/utility/DockerMachineClient.java
./org/testcontainers/utility/RegistryAuthLocator.java
./org/testcontainers/utility/Versioning.java
./org/testcontainers/utility/PrefixingImageNameSubstitutor.java
./org/testcontainers/utility/AuditLogger.java
./org/testcontainers/utility/ImageNameSubstitutor.java
./org/testcontainers/utility/DynamicPollInterval.java
./org/testcontainers/utility/ConfigurationFileImageNameSubstitutor.java
./org/testcontainers/utility/AuthConfigUtil.java
./org/testcontainers/utility/ComparableVersion.java
./org/testcontainers/utility/DockerStatus.java
./org/testcontainers/utility/ThrowingFunction.java
./org/testcontainers/utility/LazyFuture.java
./org/testcontainers/utility/RyukContainer.java
./org/testcontainers/utility/TestEnvironment.java
./org/testcontainers/images
./org/testcontainers/images/ImagePullPolicy.java
./org/testcontainers/images/DefaultPullPolicy.java
./org/testcontainers/images/ImageData.java
./org/testcontainers/images/LocalImagesCache.java
./org/testcontainers/images/AlwaysPullPolicy.java
./org/testcontainers/images/LoggedPullImageResultCallback.java
./org/testcontainers/images/TimeLimitedLoggedPullImageResultCallback.java
./org/testcontainers/images/AbstractImagePullPolicy.java
./org/testcontainers/images/RemoteDockerImage.java
./org/testcontainers/images/builder
./org/testcontainers/images/builder/Transferable.java
./org/testcontainers/images/builder/ImageFromDockerfile.java
./org/testcontainers/images/builder/dockerfile
./org/testcontainers/images/builder/dockerfile/statement
./org/testcontainers/images/builder/dockerfile/statement/KeyValuesStatement.java
./org/testcontainers/images/builder/dockerfile/statement/RawStatement.java
./org/testcontainers/images/builder/dockerfile/statement/MultiArgsStatement.java
./org/testcontainers/images/builder/dockerfile/statement/Statement.java
./org/testcontainers/images/builder/dockerfile/statement/SingleArgumentStatement.java
./org/testcontainers/images/builder/dockerfile/DockerfileBuilder.java
./org/testcontainers/images/builder/dockerfile/traits
./org/testcontainers/images/builder/dockerfile/traits/CopyStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/CmdStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/DockerfileBuilderTrait.java
./org/testcontainers/images/builder/dockerfile/traits/ExposeStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/LabelStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/RunStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/WorkdirStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/VolumeStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/UserStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/AddStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/FromStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/EnvStatementTrait.java
./org/testcontainers/images/builder/dockerfile/traits/EntryPointStatementTrait.java
./org/testcontainers/images/builder/traits
./org/testcontainers/images/builder/traits/ClasspathTrait.java
./org/testcontainers/images/builder/traits/DockerfileTrait.java
./org/testcontainers/images/builder/traits/BuildContextBuilderTrait.java
./org/testcontainers/images/builder/traits/StringsTrait.java
./org/testcontainers/images/builder/traits/FilesTrait.java
./org/testcontainers/images/ParsedDockerfile.java
./org/testcontainers/images/PullPolicy.java
./org/testcontainers/images/AgeBasedPullPolicy.java
./org/testcontainers/dockerclient
./org/testcontainers/dockerclient/NpipeSocketClientProviderStrategy.java
./org/testcontainers/dockerclient/RootlessDockerClientProviderStrategy.java
./org/testcontainers/dockerclient/EnvironmentAndSystemPropertyClientProviderStrategy.java
./org/testcontainers/dockerclient/HeadersAddingDockerHttpClient.java
./org/testcontainers/dockerclient/DockerClientConfigUtils.java
./org/testcontainers/dockerclient/DockerMachineClientProviderStrategy.java
./org/testcontainers/dockerclient/AuditLoggingDockerClient.java
./org/testcontainers/dockerclient/InvalidConfigurationException.java
./org/testcontainers/dockerclient/TransportConfig.java
./org/testcontainers/dockerclient/LogToStringContainerCallback.java
./org/testcontainers/dockerclient/UnixSocketClientProviderStrategy.java
./org/testcontainers/dockerclient/AuthDelegatingDockerClientConfig.java
./org/testcontainers/dockerclient/DockerClientProviderStrategy.java
./org/testcontainers/containers
./org/testcontainers/containers/ContainerState.java
./org/testcontainers/containers/DockerComposeContainer.java
./org/testcontainers/containers/ParsedDockerComposeFile.java
./org/testcontainers/containers/InternetProtocol.java
./org/testcontainers/containers/SocatContainer.java
./org/testcontainers/containers/PortForwardingContainer.java
./org/testcontainers/containers/DockerComposeFiles.java
./org/testcontainers/containers/FutureContainer.java
./org/testcontainers/containers/Network.java
./org/testcontainers/containers/output
./org/testcontainers/containers/output/FrameConsumerResultCallback.java
./org/testcontainers/containers/output/WaitingConsumer.java
./org/testcontainers/containers/output/OutputFrame.java
./org/testcontainers/containers/output/BaseConsumer.java
./org/testcontainers/containers/output/ToStringConsumer.java
./org/testcontainers/containers/output/Slf4jLogConsumer.java
./org/testcontainers/containers/ContainerFetchException.java
./org/testcontainers/containers/SelinuxContext.java
./org/testcontainers/containers/ComposeServiceWaitStrategyTarget.java
./org/testcontainers/containers/ContainerLaunchException.java
./org/testcontainers/containers/Container.java
./org/testcontainers/containers/BindMode.java
./org/testcontainers/containers/GenericContainer.java
./org/testcontainers/containers/ExecInContainerPattern.java
./org/testcontainers/containers/startupcheck
./org/testcontainers/containers/startupcheck/IndefiniteWaitOneShotStartupCheckStrategy.java
./org/testcontainers/containers/startupcheck/StartupCheckStrategy.java
./org/testcontainers/containers/startupcheck/MinimumDurationRunningStartupCheckStrategy.java
./org/testcontainers/containers/startupcheck/IsRunningStartupCheckStrategy.java
./org/testcontainers/containers/startupcheck/OneShotStartupCheckStrategy.java
./org/testcontainers/containers/FailureDetectingExternalResource.java
./org/testcontainers/containers/FixedHostPortGenericContainer.java
./org/testcontainers/containers/VncRecordingContainer.java
./org/testcontainers/containers/traits
./org/testcontainers/containers/traits/LinkableContainer.java
./org/testcontainers/containers/wait
./org/testcontainers/containers/wait/internal
./org/testcontainers/containers/wait/internal/InternalCommandPortListeningCheck.java
./org/testcontainers/containers/wait/internal/ExternalPortListeningCheck.java
./org/testcontainers/containers/wait/strategy
./org/testcontainers/containers/wait/strategy/WaitAllStrategy.java
./org/testcontainers/containers/wait/strategy/WaitStrategy.java
./org/testcontainers/containers/wait/strategy/LogMessageWaitStrategy.java
./org/testcontainers/containers/wait/strategy/DockerHealthcheckWaitStrategy.java
./org/testcontainers/containers/wait/strategy/HttpWaitStrategy.java
./org/testcontainers/containers/wait/strategy/AbstractWaitStrategy.java
./org/testcontainers/containers/wait/strategy/Wait.java
./org/testcontainers/containers/wait/strategy/HostPortWaitStrategy.java
./org/testcontainers/containers/wait/strategy/WaitStrategyTarget.java
./org/testcontainers/DockerClientFactory.java
./org/testcontainers/DelegatingDockerClient.java
./org/testcontainers/UnstableAPI.java
./org/testcontainers/lifecycle
./org/testcontainers/lifecycle/Startables.java
./org/testcontainers/lifecycle/TestDescription.java
./org/testcontainers/lifecycle/TestLifecycleAware.java
./org/testcontainers/lifecycle/Startable.java
./org/testcontainers/Testcontainers.java


### Additional Information

_No response_
kiview commented 2 years ago

TBH, I am not sure if there is something we can do about it.

asbachb commented 2 years ago

Seems to be unsupported by gradle shade plugin: https://github.com/johnrengelman/shadow/issues/41

bsideup commented 2 years ago

Hi @asbachb, shaded classes are "internal" and not supposed to be used by anyone. We also have a check that ensures that we never leak them to the public API. So it is "by design" in some sense.

asbachb commented 2 years ago

@bsideup sources are needed for debugging not for development. So from my understanding it does not matter if it's "internal" or not.

What's the point of publishing the sources if I cannot debug the "internals"?