Maven plugin development - how to ensure building for Maven 3.0.x instead of 3.1.x? -
i'm trying develop custom maven plugin. i'm running problem when execute unit tests: java.lang.noclassdeffounderror: org.eclipse.aether.repositorysystemsession stack trace below:
initializationerror(com.mycompany.myplugintest) time elapsed: 0 sec (testsuite.java:132) @ org.junit.internal.runners.junit38classrunner.(junit38classrunner.java:72) @ org.junit.internal.builders.junit3builder.runnerforclass(junit3builder.java:11) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:59) @ org.junit.internal.builders.alldefaultpossibilitiesbuilder.runnerforclass(alldefaultpossibilitiesbuilder.java:26) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:59) @ org.junit.internal.requests.classrequest.getrunner(classrequest.java:26) @ org.apache.maven.surefire.junit4.junit4provider.execute(junit4provider.java:262) @ org.apache.maven.surefire.junit4.junit4provider.executetestset(junit4provider.java:153) @ org.apache.maven.surefire.junit4.junit4provider.invoke(junit4provider.java:124) @ org.apache.maven.surefire.booter.forkedbooter.invokeproviderinsameclassloader(forkedbooter.java:200) @ org.apache.maven.surefire.booter.forkedbooter.runsuitesinprocess(forkedbooter.java:153) @ org.apache.maven.surefire.booter.forkedbooter.main(forkedbooter.java:103) caused by: java.lang.classnotfoundexception: org.eclipse.aether.repositorysystemsession @ java.net.urlclassloader.findclass(urlclassloader.java:423) @ java.lang.classloader.loadclass(classloader.java:660) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:346) @ java.lang.classloader.loadclass(classloader.java:626) @ java.lang.j9vminternals.verifyimpl(native method) @ java.lang.j9vminternals.verify(j9vminternals.java:72) @ java.lang.j9vminternals.verify(j9vminternals.java:70) @ java.lang.j9vminternals.initialize(j9vminternals.java:134) @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:44) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:27) @ java.lang.reflect.constructor.newinstance(constructor.java:516) @ junit.framework.testsuite.createtest(testsuite.java:63) @ junit.framework.testsuite.addtestmethod(testsuite.java:310) @ junit.framework.testsuite.addtestsfromtestcase(testsuite.java:153) @ junit.framework.testsuite.(testsuite.java:132) @ org.junit.internal.runners.junit38classrunner.(junit38classrunner.java:72) @ org.junit.internal.builders.junit3builder.runnerforclass(junit3builder.java:11) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:59) @ org.junit.internal.builders.alldefaultpossibilitiesbuilder.runnerforclass(alldefaultpossibilitiesbuilder.java:26) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:59) @ org.junit.internal.requests.classrequest.getrunner(classrequest.java:26) @ org.apache.maven.surefire.junit4.junit4provider.execute(junit4provider.java:262) @ org.apache.maven.surefire.junit4.junit4provider.executetestset(junit4provider.java:153) @ org.apache.maven.surefire.junit4.junit4provider.invoke(junit4provider.java:124) @ org.apache.maven.surefire.booter.forkedbooter.invokeproviderinsameclassloader(forkedbooter.java:200) @ org.apache.maven.surefire.booter.forkedbooter.runsuitesinprocess(forkedbooter.java:153) @ org.apache.maven.surefire.booter.forkedbooter.main(forkedbooter.java:103)
from research, can happen when building maven 3.1.x because maven switched sonatype aether implementation eclipse implementation.
i trying build plugin eclipse 3.0.4, since that's what's installed on our workstations. i'm assuming i'm seeing error because 1 of dependencies maven 3.1.x dependency, although i'm not sure one. know dependency should correct?
also, know if it's possible build plugin work maven 3.0.x , 3.1.x? i'd rather not have go through again day in future when move newer version of maven.
the dependencies in pom this:
<dependencies> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-plugin-api</artifactid> <version>3.0.4</version> </dependency> <dependency> <groupid>org.apache.maven.plugin-tools</groupid> <artifactid>maven-plugin-annotations</artifactid> <version>3.0</version> </dependency> <dependency> <groupid>org.apache.maven.plugin-tools</groupid> <artifactid>maven-plugin-tools-api</artifactid> <version>3.0</version> </dependency> <dependency> <groupid>org.apache.maven.plugin-testing</groupid> <artifactid>maven-plugin-testing-harness</artifactid> <version>3.0.0</version> <scope>test</scope> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-resources-plugin</artifactid> <version>2.6</version> </dependency> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-compat</artifactid> <version>3.0.4</version> </dependency> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-model</artifactid> <version>3.0.4</version> </dependency> </dependencies>
ok, think figured out issue aether: appears depend on version of maven-plugin-testing-harness being used. version <= 2.1 seems use sonatype aether. using set of dependencies resolves aether problem:
<dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-artifact</artifactid> <version>3.0.5</version> </dependency> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-compat</artifactid> <version>3.0.5</version> </dependency> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-plugin-api</artifactid> <version>3.0.5</version> </dependency> <dependency> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-resources-plugin</artifactid> <version>2.6</version> </dependency> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-core</artifactid> <version>3.0.5</version> </dependency> <dependency> <groupid>org.apache.maven.plugin-tools</groupid> <artifactid>maven-plugin-annotations</artifactid> <version>3.1</version> </dependency> <dependency> <!-- version 2.1 uses sonatype aether. after 2.1 uses eclipse aether. --> <groupid>org.apache.maven.plugin-testing</groupid> <artifactid>maven-plugin-testing-harness</artifactid> <scope>test</scope> <version>2.1</version> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.11</version> <scope>test</scope> </dependency>
Comments
Post a Comment