diff --git a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java index 268a033f..565e99d2 100644 --- a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java +++ b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java @@ -146,6 +146,11 @@ public void beforeEach(ExtensionContext context) throws Exception { .map(Basedir::value) .orElseGet(PlexusExtension::getBasedir); + URL resource = context.getRequiredTestClass().getResource(basedir); + if (resource != null) { + basedir = Paths.get(resource.toURI()).toString(); + } + setTestBasedir(basedir, context); PlexusContainer plexusContainer = getContainer(context); diff --git a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java index 4b6baed4..01c286dd 100644 --- a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java +++ b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java @@ -116,4 +116,12 @@ void basedirInjectedWithBasedirAnnotation(ParametersMojo mojo) { assertEquals("i-have-a-basedir-set-by-annotation", mojo.getPlain()); assertDoesNotThrow(mojo::execute); } + + @Test + @Basedir("/projects/basedir-set-by-annotation-classpath") + @InjectMojo(goal = "parameters", pom = POM_DOT_XML_FILE) + void basedirInjectedWithBasedirFromClasspathAnnotation(ParametersMojo mojo) { + assertEquals("i-have-a-basedir-set-by-annotation-classpath", mojo.getPlain()); + assertDoesNotThrow(mojo::execute); + } } diff --git a/maven-plugin-testing-harness/src/test/projects/basedir-set-by-annotation/pom.xml b/maven-plugin-testing-harness/src/test/projects/basedir-set-by-annotation/pom.xml index 82cb188d..dc5af5cb 100644 --- a/maven-plugin-testing-harness/src/test/projects/basedir-set-by-annotation/pom.xml +++ b/maven-plugin-testing-harness/src/test/projects/basedir-set-by-annotation/pom.xml @@ -33,15 +33,6 @@ under the License. test test-plugin 0.0.1-SNAPSHOT - - - test - - test - - compile - - i-have-a-basedir-set-by-annotation diff --git a/maven-plugin-testing-harness/src/test/resources/projects/basedir-set-by-annotation-classpath/pom.xml b/maven-plugin-testing-harness/src/test/resources/projects/basedir-set-by-annotation-classpath/pom.xml new file mode 100644 index 00000000..0fd819e3 --- /dev/null +++ b/maven-plugin-testing-harness/src/test/resources/projects/basedir-set-by-annotation-classpath/pom.xml @@ -0,0 +1,42 @@ + + + + + + 4.0.0 + + test + test-test + 1.0-SNAPSHOT + jar + + + + + test + test-plugin + 0.0.1-SNAPSHOT + + i-have-a-basedir-set-by-annotation-classpath + + + + +