tokenization of various parameters inside a dependency tag fails during initialization
The following dependency is part of my pom.xml file and by choosing an appropriate database profile in my profiles.xml, these values get substituted properly. The following definition was working on Maven 2.2.1 and has stopped working post migration to Maven 3.0.2. How do fix this issue?
<dependency>
<groupId>${db.groupId开发者_开发知识库}</groupId>
<artifactId>${db.artifactId}</artifactId>
<version>${db.driver.version}</version>
<scope>test</scope>
</dependency>
<profile>
<id>h2</id>
<properties>
<db.groupId>${db.h2.groupId}</db.groupId>
<db.artifactId>${db.h2.artifactId}</db.artifactId>
<db.type>h2</db.type> <db.driver.version>${db.h2.driver.version</db.driver.version>
<db.driver>${db.h2.driver}</db.driver>
</properties>
</profile>
ERROR
[DEBUG] Looking up lifecyle mappings for packaging pom from ClassRealm[plex
us.core, parent: null]
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encou
ntered while processing the POMs:
[WARNING] The expression ${pom.url} is deprecated. Please use ${project.url
} instead. @
[ERROR] 'dependencyManagement.dependencies.dependency.artifactId' for ${db.
groupId}:${db.artifactId}:jar with value '${db.artifactId}' does not match
a valid id pattern. @ line 2488, column 29
[ERROR] 'dependencyManagement.dependencies.dependency.groupId' for ${db.gro
upId}:${db.artifactId}:jar with value '${db.groupId}' does not match a vali
d id pattern. @ line 2487, column 26
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProj
ectBuilder.java:325)
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:
632)
at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(Default
Maven.java:581)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:233)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor
Impl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod
AccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launche
r.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCo
de(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.
java:352)
From the Maven 3.x Compatibility notes,
The support for profiles outside of the POM or the settings.xml has been
removed in version 3.x and users that previously used this feature are advised
to move the affected profiles into their settings.xml.
This explains your problem as well as suggests the solution for it.
精彩评论