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

com.github.docker-java is not shaded and conflicts with the project's version #1113

Closed nasis closed 4 years ago

nasis commented 5 years ago

Adding com.github.docker-java:docker-java to a project that uses testcontainers creates dependency conflicts. In a way this issue is related to this one but that one is closed.

This example with the below dependencies demonstrate the problem

import org.junit.Test;
import org.testcontainers.containers.MySQLContainer;

public class DockerJavaTest {
    @Test
    public void dockerJavaTest() {
        MySQLContainer mySQLContainer = new MySQLContainer();
        mySQLContainer.start();
        mySQLContainer.stop();
    }
}
plugins {
    id 'java'
}

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'com.github.docker-java:docker-java:3.0.6'
    testCompile "org.testcontainers:testcontainers:1.10.4"
    testCompile "org.testcontainers:mysql:1.10.4"
    testCompile "ch.qos.logback:logback-classic:1.2.2"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
org.testcontainers.shaded.com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ID" (class com.github.dockerjava.api.model.Info), not marked as ignorable (48 known properties: "systemStatus", "ipv4Forwarding", "httpsProxy", "discoveryBackend", "httpProxy", "clusterStore", "cpuCfsPeriod", "dockerRootDir", "containersRunning", "operatingSystem", "containers", "architecture", "initPath", "cpuSet", "containersStopped", "systemTime", "oomKillDisable", "registryConfig", "containersPaused", "oomScoreAdj", "experimentalBuild", "loggingDriver", "driver", "nfd", "noProxy", "memTotal", "cpuCfsQuota", "bridgeNfIp6tables", "initSha1", "images", "memoryLimit", "cpuShares", "osType", "indexServerAddress", "name", "bridgeNfIptables", "debug", "serverVersion", "id", "plugins", "driverStatuses", "ncpu", "labels", "executionDriver", "kernelVersion", "sockets", "swapLimit", "clusterAdvertise"])
 at [Source: buffer(org.testcontainers.shaded.okhttp3.internal.http1.Http1Codec$ChunkedSource@4f209819).inputStream(); line: 1, column: 8] (through reference chain: com.github.dockerjava.api.model.Info["ID"])

    at org.testcontainers.shaded.com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:839)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1045)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1352)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1330)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:264)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736)
    at org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2803)
    at org.testcontainers.dockerclient.transport.okhttp.OkHttpInvocationBuilder.get(OkHttpInvocationBuilder.java:101)
    at com.github.dockerjava.core.exec.InfoCmdExec.exec(InfoCmdExec.java:24)
    at com.github.dockerjava.core.exec.InfoCmdExec.exec(InfoCmdExec.java:14)
    at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)
    at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:112)
    at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:162)
    at org.testcontainers.containers.JdbcDatabaseContainer.<init>(JdbcDatabaseContainer.java:40)
    at org.testcontainers.containers.MySQLContainer.<init>(MySQLContainer.java:24)
    at DockerJavaTest.dockerJavaTest(DockerJavaTest.java:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
bsideup commented 5 years ago

Hi @nasis!

We plan to remove "embedded" docker-java as soon as they ship a modularised version of it so that we can opt out of Netty code (we use OkHttp now).

Sorry, the problem is known, but unfortunately, there is not much we can do. However, we continuously update docker-java to the latest version ASAP, in case you can afford using the latest code from docker-java.

nasis commented 5 years ago

Thanks for the fast response @bsideup but that still doesn't solve the issue entirely. Moving to the release notes version of docker-java:3.1.0-rc-4 has a different conflict

java.lang.AbstractMethodError: org.testcontainers.dockerclient.transport.okhttp.OkHttpInvocationBuilder.get(Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object;

    at com.github.dockerjava.core.exec.InfoCmdExec.exec(InfoCmdExec.java:24)
    at com.github.dockerjava.core.exec.InfoCmdExec.exec(InfoCmdExec.java:14)
    at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)
    at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:112)
    at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:162)
    at org.testcontainers.containers.JdbcDatabaseContainer.<init>(JdbcDatabaseContainer.java:40)
    at org.testcontainers.containers.MySQLContainer.<init>(MySQLContainer.java:24)
    at DockerJavaTest.dockerJavaTest(DockerJavaTest.java:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
dependencies {
    testCompile 'com.github.docker-java:docker-java:3.1.0-rc-4'
    testCompile "org.testcontainers:testcontainers:1.10.4"
    testCompile "org.testcontainers:mysql:1.10.4"
    testCompile "ch.qos.logback:logback-classic:1.2.2"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

This is quite a vicious cycle. I couldn't find a pair of testcontainers and docker-java that can pass this test successfully.

bsideup commented 5 years ago

@nasis there was an issue with Bintray publishing of 1.10.4, could you please try 1.10.5 instead? Just in case

nasis commented 5 years ago

@bsideup same. And same happens with 1.9.0 too.

bsideup commented 5 years ago

@nasis oh, I think I know what happens. Darn!

Your InfoCmdExec#exec (from original docker-java) calls .get with TypeReference of non-shaded Jackson.

We will try to fix it. Meanwhile, you can try removing docker-java dependency from your classpath and use the one shipped with Testcontainers. It is the same docker-java, but with OkHttp transport and fewer dependencies. Sorry 😞

nasis commented 5 years ago

@bsideup thanks but that's not feasible for me at this time. I'll wait for the fix.

s17t commented 5 years ago

I hit this problem too recently. An application with docker-java client and a testcontainer can't run the test phase. I removed the docker-java dependency and left the testcontainer in the main scope instead of the test scope.

OkHttpInvocationBuilder does not define or inherit an implementation of the resolved method abstract get(Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object; of interface com.github.dockerjava.core.InvocationBuilder
Gaibhne commented 5 years ago

Removing the explicit docker-java from my dependencies and attempting to use the one that comes with testcontainers leads to the following error:

java.lang.NoClassDefFoundError: org/testcontainers/shaded/org/glassfish/jersey/client/spi/ConnectorProvider

s17t commented 5 years ago

@Gaibhne The guys from Spring created a shaded docker-java library to avoid conflict. The following instructions are for Maven but can be adapt to to gradle:

Edit: IDEs still will have problem to figure out the classpath but you can run single integration tests with

$ mvn verify -Dit.test=ClassIT#test_method   
Gaibhne commented 5 years ago

@s17t thank you for the advice. Unfortunately it does not affect the error I am seeing at all. I am including sections of my pom.xml and the output of dependency:tree in case it is in any way helpful to track down the issue. The pom.xml is quite a load, but I figure since I don't fully understand the conflicts I'm better off not cutting out things.

Edit: Sorry, I misspoke: it does fix the original error, but leads to the same error as including the regular docker-java when trying to use testcontainers:

org.testcontainers.dockerclient.transport.okhttp.OkHttpInvocationBuilder.get(Lcom/github/dockerjava/shaded/com/fasterxml/jackson/core/type/TypeReference;

pom.xml:

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>de.company.internal</groupId>
    <artifactId>projectname</artifactId>
    <version>1.3.0</version>
    <packaging>jar</packaging>

    <name>projectname</name>
    <url>http://maven.apache.org</url>

    <repositories>
        <repository>
            <id>central</id>
            <name>Maven Repository Switchboard</name>
            <url>http://repo1.maven.org/maven2</url>
        </repository>
        <repository>
            <id>spring-plugins-release</id>
            <url>http://repo.spring.io/plugins-release/</url>
        </repository>
    </repositories>

    <prerequisites>
        <maven>3.5</maven>
    </prerequisites>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!-- Versions -->

        <okhttp.version>3.12.1</okhttp.version>
        <retrofit.version>2.3.0</retrofit.version>
        <internal.java.commons.version>1.17.1</internal.java.commons.version>
        <org.jdbi.version>3.5.1</org.jdbi.version>
        <io.prometheus.version>0.0.26</io.prometheus.version>
        <testcontainers.version>1.10.6</testcontainers.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jdbi</groupId>
                <artifactId>jdbi3-bom</artifactId>
                <type>pom</type>
                <version>${org.jdbi.version}</version>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.197</version>
        </dependency>

        <dependency>
            <groupId>org.tuxdude.logback.extensions</groupId>
            <artifactId>logback-colorizer</artifactId>
            <version>1.0.1</version>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!-- Exec wrapper -->
        <dependency>
            <groupId>org.zeroturnaround</groupId>
            <artifactId>zt-exec</artifactId>
            <version>1.10</version>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>2.11.0</version>
        </dependency>

        <!-- company Toolbox -->
        <dependency>
            <groupId>de.company.util</groupId>
            <artifactId>companyMiscellaneous</artifactId>
            <version>0.3</version>
        </dependency>

        <!-- company Logger -->
        <dependency>
            <groupId>de.company.internal</groupId>
            <artifactId>internalLogger</artifactId>
            <version>0.1.5</version>
            <exclusions>
                <exclusion>
                    <groupId>de.company.internal</groupId>
                    <artifactId>internalDBCore</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- company Commons -->
        <dependency>
            <groupId>de.company.internal.commons</groupId>
            <artifactId>internal-java-commons</artifactId>
            <version>${internal.java.commons.version}</version>
        </dependency>

        <!-- Argument parsing library -->
        <dependency>
            <groupId>com.beust</groupId>
            <artifactId>jcommander</artifactId>
            <version>1.72</version>
        </dependency>

        <!-- Config file parsing library -->
        <dependency>
            <groupId>org.aeonbits.owner</groupId>
            <artifactId>owner</artifactId>
            <version>1.0.9</version>
        </dependency>

        <!-- Rest Assured JSON Scheme validator -->
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>3.0.5</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.mail</groupId>
                    <artifactId>mailapi</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Type-safe HTTP client that can consume REST services -->
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>${retrofit.version}</version>
        </dependency>

        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>converter-gson</artifactId>
            <version>${retrofit.version}</version>
        </dependency>

        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>converter-scalars</artifactId>
            <version>${retrofit.version}</version>
        </dependency>

        <!-- Logger for the HTTP client -->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>logging-interceptor</artifactId>
            <version>${okhttp.version}</version>
        </dependency>

        <!-- Boiler-plate reducing library -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <scope>provided</scope>
        </dependency>

        <!-- Google core tools library -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.2-jre</version>
        </dependency>

        <!-- Light weight JDBC wrapper for convenient database access -->
        <dependency>
            <groupId>org.jdbi</groupId>
            <artifactId>jdbi3-core</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.google.code.findbugs</groupId>
                    <artifactId>annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.jdbi</groupId>
            <artifactId>jdbi3-sqlobject</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.google.code.findbugs</groupId>
                    <artifactId>annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- The client -->
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient</artifactId>
            <version>${io.prometheus.version}</version>
        </dependency>
        <!-- Hotspot JVM metrics -->
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_hotspot</artifactId>
            <version>${io.prometheus.version}</version>
        </dependency>
        <!-- Pushgateway exposition -->
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_pushgateway</artifactId>
            <version>${io.prometheus.version}</version>
        </dependency>

        <!-- Test only dependencies -->

        <!-- JUnit 4 Test framework -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!-- Helper library to test console output -->
        <dependency>
            <groupId>com.github.stefanbirkner</groupId>
            <artifactId>system-rules</artifactId>
            <version>1.16.1</version>
            <scope>test</scope>
        </dependency>

        <!-- Mock database for unit testing -->
        <dependency>
            <groupId>org.zapodot</groupId>
            <artifactId>embedded-db-junit</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!-- Docker test containers for testing against MySQL -->

        <dependency>
            <groupId>com.aries</groupId>
            <artifactId>docker-java-shaded</artifactId>
            <version>3.1.0-rc-4</version>
        </dependency>

        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>testcontainers</artifactId>
            <version>${testcontainers.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>mysql</artifactId>
            <version>${testcontainers.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.6.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <compilerArgs>
                            <arg>-parameters</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <excludes>
                            <exclude>**/db.properties</exclude>
                            <exclude>**/log4j2.xml</exclude>
                            <exclude>**/*.default</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <manifestEntries>
                                        <Main-Class>de.company.internal.projectname.App</Main-Class>
                                        <Class-Path>.</Class-Path>
                                    </manifestEntries>
                                </transformer>
                                <transformer
                                    implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer" />
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.github.edwgiz</groupId>
                        <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId>
                        <version>2.8.1</version>
                    </dependency>
                </dependencies>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.4</version>
                <configuration>
                    <show>private</show>
                    <additionalparam>-Xdoclint:none</additionalparam>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Code coverage plugin to produce test reports -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.9</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludes>
                        <exclude>**/*DB.*</exclude>
                        <exclude>**/*ADB.*</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20.1</version>
                <configuration>
                    <includes>
                        <include>TestSuite.java</include>
                    </includes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
$ mvn dependency:tree

[INFO] Scanning for projects...
[WARNING] The project de.company.internal:projectname:jar:1.3.0 uses prerequisites which is only intended for maven-plugin projects but not for non maven-plugin projects. For such purposes you should use the maven-enforcer-plugin. See https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
[INFO] 
[INFO] -----------------------< de.company.internal:projectname >-----------------------
[INFO] Building projectname 1.3.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ projectname ---
[INFO] de.company.internal:projectname:jar:1.3.0
[INFO] +- com.h2database:h2:jar:1.4.197:compile
[INFO] +- org.tuxdude.logback.extensions:logback-colorizer:jar:1.0.1:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] +- org.zeroturnaround:zt-exec:jar:1.10:compile
[INFO] |  \- commons-io:commons-io:jar:1.4:compile
[INFO] +- org.mockito:mockito-core:jar:2.11.0:compile
[INFO] |  +- net.bytebuddy:byte-buddy:jar:1.7.4:compile
[INFO] |  +- net.bytebuddy:byte-buddy-agent:jar:1.7.4:compile
[INFO] |  \- org.objenesis:objenesis:jar:2.6:compile
[INFO] +- de.company.util:companyMiscellaneous:jar:0.3:compile
[INFO] +- de.company.internal:internalLogger:jar:0.1.5:compile
[INFO] |  +- org.apache.logging.log4j:log4j-api:jar:2.8.2:compile
[INFO] |  \- org.apache.logging.log4j:log4j-core:jar:2.8.2:compile
[INFO] +- de.company.internal.commons:internal-java-commons:jar:1.17.1:compile
[INFO] |  +- com.esotericsoftware:reflectasm:jar:1.11.3:compile
[INFO] |  |  \- org.ow2.asm:asm:jar:5.0.4:compile
[INFO] |  +- commons-beanutils:commons-beanutils:jar:1.9.3:compile
[INFO] |  |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  |  \- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] |  +- one.util:streamex:jar:0.6.5:compile
[INFO] |  +- de.danielbechler:java-object-diff:jar:0.94:compile
[INFO] |  +- de.company.internal:internalDBCore:jar:1.1.15:compile
[INFO] |  |  +- com.zaxxer:HikariCP:jar:3.2.0:compile
[INFO] |  |  +- org.apache.commons:commons-lang3:jar:3.7:compile
[INFO] |  |  +- mysql:mysql-connector-java:jar:8.0.13:compile
[INFO] |  |  |  \- com.google.protobuf:protobuf-java:jar:3.6.1:compile
[INFO] |  |  \- org.apache.commons:commons-configuration2:jar:2.4:compile
[INFO] |  |     \- org.apache.commons:commons-text:jar:1.3:compile
[INFO] |  +- javax.mail:mail:jar:1.5.0-b01:compile
[INFO] |  |  \- javax.activation:activation:jar:1.1:compile
[INFO] |  +- com.google.code.findbugs:jsr305:jar:3.0.2:provided
[INFO] |  +- com.jcraft:jsch:jar:0.1.55:compile
[INFO] |  +- com.squareup:javapoet:jar:1.9.0:compile
[INFO] |  +- com.google.code.gson:gson:jar:2.8.2:compile
[INFO] |  \- com.squareup.okhttp3:okhttp:jar:3.12.1:compile
[INFO] |     \- com.squareup.okio:okio:jar:1.15.0:compile
[INFO] +- com.beust:jcommander:jar:1.72:compile
[INFO] +- org.aeonbits.owner:owner:jar:1.0.9:compile
[INFO] +- io.rest-assured:json-schema-validator:jar:3.0.5:compile
[INFO] |  +- com.github.fge:json-schema-validator:jar:2.2.6:compile
[INFO] |  |  +- joda-time:joda-time:jar:2.9.3:compile
[INFO] |  |  +- com.googlecode.libphonenumber:libphonenumber:jar:6.2:compile
[INFO] |  |  +- com.github.fge:json-schema-core:jar:1.2.5:compile
[INFO] |  |  |  +- com.github.fge:uri-template:jar:0.9:compile
[INFO] |  |  |  |  \- com.github.fge:msg-simple:jar:1.1:compile
[INFO] |  |  |  |     \- com.github.fge:btf:jar:1.2:compile
[INFO] |  |  |  +- com.github.fge:jackson-coreutils:jar:1.8:compile
[INFO] |  |  |  |  \- com.fasterxml.jackson.core:jackson-databind:jar:2.2.3:compile
[INFO] |  |  |  |     +- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.3:compile
[INFO] |  |  |  |     \- com.fasterxml.jackson.core:jackson-core:jar:2.2.3:compile
[INFO] |  |  |  \- org.mozilla:rhino:jar:1.7R4:compile
[INFO] |  |  \- net.sf.jopt-simple:jopt-simple:jar:4.6:compile
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] +- com.squareup.retrofit2:retrofit:jar:2.3.0:compile
[INFO] +- com.squareup.retrofit2:converter-gson:jar:2.3.0:compile
[INFO] +- com.squareup.retrofit2:converter-scalars:jar:2.3.0:compile
[INFO] +- com.squareup.okhttp3:logging-interceptor:jar:3.12.1:compile
[INFO] +- org.projectlombok:lombok:jar:1.16.18:provided
[INFO] +- com.google.guava:guava:jar:23.2-jre:compile
[INFO] |  +- com.google.errorprone:error_prone_annotations:jar:2.0.18:compile
[INFO] |  +- com.google.j2objc:j2objc-annotations:jar:1.1:compile
[INFO] |  \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile
[INFO] +- org.jdbi:jdbi3-core:jar:3.5.1:compile
[INFO] |  +- org.antlr:antlr-runtime:jar:3.4:compile
[INFO] |  |  +- org.antlr:stringtemplate:jar:4.0.2:compile
[INFO] |  |  \- antlr:antlr:jar:2.7.7:compile
[INFO] |  \- net.jodah:expiringmap:jar:0.5.6:compile
[INFO] +- org.jdbi:jdbi3-sqlobject:jar:3.5.1:compile
[INFO] +- io.prometheus:simpleclient:jar:0.0.26:compile
[INFO] +- io.prometheus:simpleclient_hotspot:jar:0.0.26:compile
[INFO] +- io.prometheus:simpleclient_pushgateway:jar:0.0.26:compile
[INFO] |  \- io.prometheus:simpleclient_common:jar:0.0.26:compile
[INFO] +- junit:junit:jar:4.12:compile
[INFO] +- com.github.stefanbirkner:system-rules:jar:1.16.1:test
[INFO] +- org.zapodot:embedded-db-junit:jar:1.1.1:compile
[INFO] |  \- org.hsqldb:hsqldb:jar:2.3.2:compile
[INFO] +- com.aries:docker-java-shaded:jar:3.1.0-rc-4:compile
[INFO] +- org.testcontainers:testcontainers:jar:1.10.6:test
[INFO] |  +- org.jetbrains:annotations:jar:13.0:test
[INFO] |  +- javax.annotation:javax.annotation-api:jar:1.3.1:test
[INFO] |  +- org.apache.commons:commons-compress:jar:1.18:test
[INFO] |  +- javax.xml.bind:jaxb-api:jar:2.3.1:test
[INFO] |  |  \- javax.activation:javax.activation-api:jar:1.2.0:test
[INFO] |  +- org.rnorth.duct-tape:duct-tape:jar:1.0.7:test
[INFO] |  +- org.rnorth.visible-assertions:visible-assertions:jar:2.1.2:test
[INFO] |  |  \- net.java.dev.jna:jna:jar:5.2.0:test
[INFO] |  +- org.rnorth:tcp-unix-socket-proxy:jar:1.0.2:test
[INFO] |  |  +- com.kohlschutter.junixsocket:junixsocket-native-common:jar:2.0.4:test
[INFO] |  |  |  \- org.scijava:native-lib-loader:jar:2.0.2:test
[INFO] |  |  \- com.kohlschutter.junixsocket:junixsocket-common:jar:2.0.4:test
[INFO] |  \- net.java.dev.jna:jna-platform:jar:5.2.0:test
[INFO] \- org.testcontainers:mysql:jar:1.10.6:test
[INFO]    \- org.testcontainers:jdbc:jar:1.10.6:test
[INFO]       \- org.testcontainers:database-commons:jar:1.10.6:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.637 s
[INFO] Finished at: 2019-01-31T10:41:19+01:00
[INFO] ------------------------------------------------------------------------
stale[bot] commented 5 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you believe this is a mistake, please reply to this comment to keep it open. If there isn't one already, a PR to fix or at least reproduce the problem in a test case will always help us get back on track to tackle this.

andreaturli commented 5 years ago

seeing the same from testcontainers-scala

stale[bot] commented 5 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you believe this is a mistake, please reply to this comment to keep it open. If there isn't one already, a PR to fix or at least reproduce the problem in a test case will always help us get back on track to tackle this.

stale[bot] commented 5 years ago

This issue has been automatically closed due to inactivity. We apologise if this is still an active problem for you, and would ask you to re-open the issue if this is the case.

dagguh commented 5 years ago

I still care about this 🙂

dagguh commented 4 years ago

@bsideup, how to reopen this?

bsideup commented 4 years ago

@dagguh I reopened it, we're working with docker-java team on splitting it into modules, so that we can depend on docker-java-api directly. docker-java's upcoming 3.2.0 release will make it possible

dagguh commented 4 years ago

@bsideup, docker-java-api is released

bsideup commented 4 years ago

@dagguh yes (I am the author of it 😅).

We will do a release of Testcontainers with docker-java 3.2.0 and a few deprecations to let everyone update their usages and the next one most probably will finally stop shading docker-java-api.

bsideup commented 4 years ago

https://github.com/testcontainers/testcontainers-java/pull/2882 submitted