Search code examples
javamavencommand-linepropertiespom.xml

Get pom.xml property from CommandLine


I am currently writing a script for our Gitlab CI that automatically uploads files to an NFSShare folder in the network. Since I want to organize the builds and we're using maven, I thought I could "easily" get the project name from the pom.xml.

Is there a way to get the properties available from within a pom.xml through a command-line tool or something? My only other way I could think of was "regex-grepping the value by hand" - not a very clean solution in my opinion.

I already found the the properties plugin, but it only seem to ADD new properties through actual .properties files...

Any help would be much appreciated!


Solution

  • I know the question is old but I spent some time looking for this.

    To filter output you may use flags "-q -DforceStdout" where "-q" prevents output and "-DforceStdout" forces outputting result of plugin. E.g.:

    BUILD_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
    echo $BUILD_VERSION
    

    will result in printing version of project from POM.

    Second important problem I had was accessing "properties" which is explained in Nick Holt comment. To access properties you just access them directly

    <project ...>
        <version>123</version>
        (...)
        <properties>
            (...)
            <docker.registry>docker.registry.com</docker.registry>
            (...)
        </properties>
        (...)
    </project>
    

    WRONG

    mvn help:evaluate -Dexpression=project.properties.docker.registry -q -DforceStdout
    

    OK

    mvn help:evaluate -Dexpression=docker.registry -q -DforceStdout