Hey all, Bit of a crazy, mad, deep-in-bowels-of-maven question for you all.
In our locally published artifacts we've been declaring dependency versions in
a property within our poms:
```xml
<properties>
<test.version>1.2.3</test.version>
</properties>
...
<dependency>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>${test.version}</version>
</depdendency>
```
and that all works fine. When we build projects that depend on such artifacts
everything is fine, most likely due to the the property being defined IN the
pom.
However, we've started moving to/attempting to use a custom lifecycle extension
that reads properties definitions from an external file, similar to the
`properties-maven-plugin` but on more steroids, and I suspect that since the
properties are no longer in the `pom.xml` file, this is the cause of the
following exception that we see:
```
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
on project smx3.featureset: Could not resolve dependencies for project
smx3:smx3.featureset:jar:180-cr.17-SNAPSHOT: Failed to collect dependencies at
smx3:smx3.statistics:jar:12.0.38-SNAPSHOT -> org.jooq:jooq:jar:[${jooq.version}]
at
org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:221)
at
org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:127)
at
org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:245)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:199)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.project.DependencyResolutionException: Could not
resolve dependencies for project smx3:smx3.featureset:jar:180-cr.17-SNAPSHOT:
Failed to collect dependencies at smx3:smx3.statistics:jar:12.0.38-SNAPSHOT ->
org.jooq:jooq:jar:[${jooq.version}]
at
org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:180)
at
org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:195)
... 23 more
Caused by: org.eclipse.aether.collection.DependencyCollectionException: Failed
to collect dependencies at smx3:smx3.statistics:jar:12.0.38-SNAPSHOT ->
org.jooq:jooq:jar:[${jooq.version}]
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:291)
at
org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:316)
at
org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:172)
... 24 more
Caused by: org.eclipse.aether.resolution.VersionRangeResolutionException: No
versions available for org.jooq:jooq:jar:[${jooq.version}] within specified
range
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.filterVersions(DefaultDependencyCollector.java:648)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:394)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:363)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:351)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.doRecurse(DefaultDependencyCollector.java:504)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:458)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:363)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:351)
at
org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)
```
When the dependency tree is resolved, the variable reference is not being
interpolated with the current user properties - quite understandable actually,
as traditionally we're NOT expecting these to be, well - mangled.
Is there anyway in current maven (3.3.9) that I can replace the
`DefaultDependencyCollector` with one of my own, that can use maven-filtering
and demangle the versions as appropriate? Can I register a replacement in my
`META-INF/plexus/components.xml` file for my lifecycle extension at all?
Cheers
Mark
[1] http://www.mojohaus.org/properties-maven-plugin/
--
Mark Derricutt
http://www.theoryinpractice.net
http://www.chaliceofblood.net
http://plus.google.com/+MarkDerricutt
http://twitter.com/talios
http://facebook.com/mderricutt
signature.asc
Description: OpenPGP digital signature
