Question

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)
Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top