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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to