Amazing! This works!

I tried so many permutations of dependency version, but obviously never got the 
right one. Thanks a lot Stuart!

-- 
Bernd Adamowicz


-----Original Message-----
From: Stuart McCulloch [mailto:mccu...@gmail.com] 
Sent: Mittwoch, 20. November 2013 16:04
To: Maven Users List
Subject: Re: MavenEmbedder problem with 3.1.x

Update the lib-jenkins-maven-embedder dependency to version 3.11, since this is 
the version that works with the latest aether/sisu dependencies.

On 20 Nov 2013, at 09:41, Bernd Adamowicz wrote:

> No answer so far. Should I file a bug? Any opinion?
> 
> Bernd Adamowicz
> 
> 
> -----Original Message-----
> From: Bernd Adamowicz [mailto:bernd.adamow...@esailors.de]
> Sent: Montag, 18. November 2013 16:12
> To: users@maven.apache.org
> Subject: MavenEmbedder problem with 3.1.x
> 
> Hi all,
> 
> When switching from Maven 3.0.x to 3.1.x some of our projects where not able 
> to execute anymore due to a problem with MavenEmbedder. Both projects are 
> command line based, no Maven plugin around it.
> 
> I think the most important part of the stack trace is this:
> 
> 37) No implementation for 
> java.util.Set<org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory> 
> was bound.
>  while locating 
> java.util.Set<org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory>
>    for parameter 0 at 
> org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider.<init>
> (Unknown
> ...
> 37 errors
>      role: org.apache.maven.execution.MavenExecutionRequestPopulator
>  roleHint:
>    at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:974)
>    at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:82)
>    at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
>    at 
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:260)
>    at 
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:252)
>    at 
> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:246)
>    at hudson.maven.MavenEmbedder.lookup(MavenEmbedder.java:567)
>    at 
> hudson.maven.MavenEmbedder.buildMavenExecutionRequest(MavenEmbedder.java:157)
>    at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:120)
>    at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:109)
>    at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:136)
>    at test.embedder.AppTest.testLookup(AppTest.java:57)
> 
> I know this problem came when I changed my aether-dependencies from 
> 'org.sonatype.aether' to 'org.eclipse.aether' in order to work with Maven 
> 3.1.x.
> 
> Fortunately this can be reproduced with a simple project which can be 
> found here: 
> https://dl.dropboxusercontent.com/u/86229859/embedder-test.tgz
> 
> Usage of the MavenEmbedder looks like this:
> 
> package test.embedder;
> import hudson.maven.MavenEmbedder;
> import hudson.maven.MavenEmbedderException;
> import hudson.maven.MavenRequest;
> import java.io.File;
> import org.apache.maven.model.building.ModelBuildingRequest;
> import org.apache.maven.project.MavenProject;
> 
> public class App {
>    private static final ClassLoader                mavenClassLoader = 
> App.class.getClassLoader();
>    private static final ThreadLocal<MavenEmbedder> embedder         = new 
> ThreadLocal<MavenEmbedder>() {
> 
>                     @Override
>                     protected MavenEmbedder initialValue() {
>                         try {
>                             MavenRequest req = new MavenRequest();
>                             
> req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1);
>                             return new MavenEmbedder(mavenClassLoader, req);
>                         } catch (MavenEmbedderException e) {
>                             throw new RuntimeException(
>                                     "Error creating MavenEmbedder", e);
>                         }
>                     }
>                 };
> 
>    public static MavenProject getMavenProject(File pomFile) {
>        try {
>            return embedder.get().readProject(pomFile);
>        } catch (Exception e) {
>            throw new RuntimeException("Error parsing POM at " + pomFile, e);
>        }
>    }
> }
> 
> This unit test will then trigger the error:
> 
> package test.embedder;
> import static org.testng.AssertJUnit.assertEquals;
> import static org.testng.AssertJUnit.assertNotNull;
> import java.io.File;
> import org.apache.commons.io.FileUtils; import 
> org.apache.maven.project.MavenProject;
> import org.testng.annotations.BeforeClass;
> import org.testng.annotations.Test;
> 
> public class AppTest {
>    private static File mvnUtilFolder = null;
>    @BeforeClass
>    public static void setUpBeforeClass() throws Exception {
>        mvnUtilFolder = 
> FileUtils.toFile(AppTest.class.getClassLoader().getResource("mvnUtil"));
>    }
> 
>    @Test
>    public void testGetMavenProject() {
>        File mvnPom = new File(mvnUtilFolder.getAbsolutePath() + "/pom.xml");
>        MavenProject mvnProject = App.getMavenProject(mvnPom);
>        assertNotNull(mvnProject);
>        assertEquals("3.5.2", mvnProject.getVersion());
>    }
> }
> 
> For me all this looks like a 'simple' classloader issue when Guice tries to 
> load the classes (e.g.:  
> org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory) but can't 
> find them.
> 
> I've googled presumably all the places dealing with problems when switching 
> from 3.0.x to 3.1.x and tried a lot of things without success. In particular:
> 
> * fixed all versions of plugins as described here: 
> https://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound
> * changed dependencies to Ather as described here: 
> http://eclipse.org/aether
> * basically I implemented things the way they are done in the 
> lib-jenkins implementation itself here: 
> https://github.com/jenkinsci/lib-jenkins-maven-embedder/blob/master/sr
> c/test/java/hudson/maven/TestMavenEmbedderSimpleProject.java
> * tried to deal with different versions of validation level 
> 'req.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1)'
> * tried myriads of different POM configurations (dependencies, 
> versions)
> 
> But actually this error persists (also when building with 3.0.x). So maybe 
> anyone can point me to the right direction? I've dealt with this problem too 
> long now and maybe I got blind for new approaches. Thanks in advance!
> 
> Bernd
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to