title: Arquillian/Shrinkwrap MavenDependencyResolver behind proxy
body: <p>I'm using Jenkins to execute a Maven Build which includes an EJB integration test using Arquillian. </p>
  
  <p>The server hosting the Jenkins and running the build is behind a proxy, which shouldn't be a problem because the <code>settings.xml</code> contains the valid proxy settings. (On my local system with no proxy it's working just fine.)</p>
  
  <p>Resolving the dependencies by maven (while running <code>mvn install</code>) works perfectly fine (started manually from bash or by Jenkins) but if I use the <code>MavenDependencyResolver</code> of Arquillian I get an Exception:</p>
  
  <p><strong>Exception</strong></p>
  
  <pre><code>2011-06-09 06:03:59,391 ERROR my.package.test.util.ArchiveUtil - Could not resolve DBUnit Dependency
  org.jboss.shrinkwrap.resolver.api.ResolutionException: Unable to collect dependeny tree for a resolution
      at org.jboss.shrinkwrap.resolver.impl.maven.MavenBuilderImpl.resolveAsFiles(MavenBuilderImpl.java:320)
      at org.jboss.shrinkwrap.resolver.impl.maven.MavenBuilderImpl.resolveAs(MavenBuilderImpl.java:376)
      at org.jboss.shrinkwrap.resolver.impl.maven.MavenBuilderImpl.resolveAs(MavenBuilderImpl.java:353)
      at org.jboss.shrinkwrap.resolver.impl.maven.MavenBuilderImpl$MavenArtifactBuilderImpl.resolveAs(MavenBuilderImpl.java:450)
      at my.package.test.util.ArchiveUtil.createTestArchive(ArchiveUtil.java:125)
      at my.package.test.util.ArchiveUtil.&lt;clinit&gt;(ArchiveUtil.java:36)
      at my.package.test.util.AbstractTest.createTestArchive(AbstractTest.java:46)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.jboss.arquillian.impl.client.deployment.AnnotationDeploymentScenarioGenerator.invoke(AnnotationDeploymentScenarioGenerator.java:162)
      at org.jboss.arquillian.impl.client.deployment.AnnotationDeploymentScenarioGenerator.generateDeployment(AnnotationDeploymentScenarioGenerator.java:100)
      at org.jboss.arquillian.impl.client.deployment.AnnotationDeploymentScenarioGenerator.generate(AnnotationDeploymentScenarioGenerator.java:55)
      at org.jboss.arquillian.impl.client.deployment.DeploymentGenerator.generateDeployment(DeploymentGenerator.java:76)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90)
      at org.jboss.arquillian.impl.core.EventContextImpl.invokeObservers(EventContextImpl.java:98)
      at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:80)
      at org.jboss.arquillian.impl.core.ManagerImpl.fire(ManagerImpl.java:126)
      at org.jboss.arquillian.impl.core.ManagerImpl.fire(ManagerImpl.java:106)
      at org.jboss.arquillian.impl.core.EventImpl.fire(EventImpl.java:67)
      at org.jboss.arquillian.impl.client.ContainerEventController.execute(ContainerEventController.java:68)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90)
      at org.jboss.arquillian.impl.core.EventContextImpl.invokeObservers(EventContextImpl.java:98)
      at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:80)
      at org.jboss.arquillian.impl.TestContextHandler.createClassContext(TestContextHandler.java:68)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90)
      at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:87)
      at org.jboss.arquillian.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:54)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.jboss.arquillian.impl.core.ObserverImpl.invoke(ObserverImpl.java:90)
      at org.jboss.arquillian.impl.core.EventContextImpl.proceed(EventContextImpl.java:87)
      at org.jboss.arquillian.impl.core.ManagerImpl.fire(ManagerImpl.java:126)
      at org.jboss.arquillian.impl.core.ManagerImpl.fire(ManagerImpl.java:106)
      at org.jboss.arquillian.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:70)
      at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:170)
      at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:303)
      at org.jboss.arquillian.junit.Arquillian.access$300(Arquillian.java:45)
      at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:187)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
      at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127)
      at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
      at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:120)
      at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:103)
      at org.apache.maven.surefire.Surefire.run(Surefire.java:169)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
      at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
  Caused by: org.sonatype.aether.collection.DependencyCollectionException: Failed to collect dependencies for [org.dbunit:dbunit:jar:2.4.8 ()]
      at org.sonatype.aether.impl.internal.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:251)
      at org.sonatype.aether.impl.internal.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:267)
      at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:314)
      at org.jboss.shrinkwrap.resolver.impl.maven.MavenRepositorySystem.resolveDependencies(MavenRepositorySystem.java:176)
      at org.jboss.shrinkwrap.resolver.impl.maven.MavenBuilderImpl.resolveAsFiles(MavenBuilderImpl.java:316)
      ... 65 more
  Caused by: org.sonatype.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.dbunit:dbunit:jar:2.4.8
      at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:275)
      at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:171)
      at org.sonatype.aether.impl.internal.DefaultDependencyCollector.process(DefaultDependencyCollector.java:419)
      at org.sonatype.aether.impl.internal.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:233)
      ... 69 more
  Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.dbunit:dbunit:pom:2.4.8 from/to central (http://repo1.maven.org/maven2): Error transferring file: Connection timed out
      at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:499)
      at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:187)
      at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:260)
      ... 72 more
  Caused by: org.sonatype.aether.transfer.ArtifactTransferException: Could not transfer artifact org.dbunit:dbunit:pom:2.4.8 from/to central (http://repo1.maven.org/maven2): Error transferring file: Connection timed out
      at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:934)
      at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:925)
      at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.flush(WagonRepositoryConnector.java:681)
      at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.flush(WagonRepositoryConnector.java:675)
      at org.sonatype.aether.connector.wagon.WagonRepositoryConnector.get(WagonRepositoryConnector.java:420)
      at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:411)
      ... 74 more
  Caused by: org.apache.maven.wagon.TransferFailedException: Error transferring file: Connection timed out
      at org.apache.maven.wagon.providers.http.LightweightHttpWagon.resourceExists(LightweightHttpWagon.java:357)
      at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:566)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
  Caused by: java.net.ConnectException: Connection timed out
      at java.net.PlainSocketImpl.socketConnect(Native Method)
          at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
      at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
      at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
      at java.net.Socket.connect(Socket.java:529)
      at java.net.Socket.connect(Socket.java:478)
      at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
      at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
      at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
      at sun.net.www.http.HttpClient.&lt;init&gt;(HttpClient.java:233)
      at sun.net.www.http.HttpClient.New(HttpClient.java:306)
      at sun.net.www.http.HttpClient.New(HttpClient.java:323)
      at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
      at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
      at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
      at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
      at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
      at org.apache.maven.wagon.providers.http.LightweightHttpWagon.resourceExists(LightweightHttpWagon.java:334)
      ... 4 more
  </code></pre>
  
  <p><strong>Java Source</strong></p>
  
  <pre><code>//...
  try {
      ear.addAsLibrary(DependencyResolvers
              .use(MavenDependencyResolver.class)
              .artifact("org.dbunit:dbunit:1.4.8")
              .resolveAs(JavaArchive.class).iterator().next());
  } catch (Throwable t) {
      LOGGER.error("Could not resolve DBUnit Dependency", t);
  }
  //...
  </code></pre>
  
  <p><strong>pom.xml</strong></p>
  
  <pre><code>    &lt;dependency&gt;
          &lt;groupId&gt;org.dbunit&lt;/groupId&gt;
          &lt;artifactId&gt;dbunit&lt;/artifactId&gt;
          &lt;version&gt;${dbunit.version}&lt;/version&gt;
          &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
  </code></pre>
  
  <p>How can I make sure this java code gets there is a proxy (if the missing proxy is the issue). Do I have to use environment variable or a settings.xml?</p>
  
  <p>Is there an other solution to get this dependency with Shrinkwarp, e.g. as a <code>jar</code>? (I guess this would be my preferred solution.)</p>
  
  <p><strong>Environment Details</strong></p>
  
  <ul>
  <li>Server OS: Ubuntu 10.04 </li>
  <li>Maven 3.03</li>
  <li>Jenkins 1.413 running on Tomcat 7</li>
  <li>Arquillian 1.0.0.Alpha5</li>
  </ul>
  
  <p>Thank you.
  Daniel</p>