You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by "JeremieB." <Je...@gemalto.com> on 2014/09/24 11:34:51 UTC

Use "quiet reference" notation for properties

Hello,

I wonder if there is any easy way to do the equivalent of Velocity "quiet
references" with Maven poms ... ?

Here is my use-case (in a corporate pom):
- I set a property "label" containing some versions and reference to
"${buildNumber}"
- This property "${buildNumber}" is optionally set by the
buildnumber-maven-plugin, ie the plugin is declared or not in the build
depending on projects, ie if they want to use a build number or not
The idea is to provide in a corporate pom a default label naming scheme,
including a build number but only if it is used and defined by inheriting
project.

Problem is that if buildnumber-maven-plugin is not declared in a project,
the "label" property contains "${buildNumber}" literally, whereas if
undefined I would prefer it to be resolved as an empty string.
In Velocity I would write something like:
${project.version}-$!{buildNumber}

If I set a default value to empty string to the buildNumber property, then
the buildnumber-maven-plugin doesn't override this value, so this is not a
solution either.

I could workaround this by using buildhelper:regex-property to remove the
"${buildNumber}" literal expression if it wasn't resolved, but it seems a
bit convoluted in a corporate pom, and requires proper ordering of plugins
executions so I don't find this very reliable or maintainable.
I kept it though, as all other solutions I could think of, imply more manual
actions from users, or slow down the build too much... My main objective in
the corporate pom being to be the least obtrusive possible.

Solutions I thought about:
- run the buildnumber-maven-plugin all the time, and set
"revisionOnScmFailure" to empty string --> slows down all builds for an
optional feature
- add this buildnumber-maven-plugin declaration in a profile, and set
"buildNumber" property to empty string if this profile is not activated -->
complex profiles activation/deactivation requiring CLI switches

Do you think there's something better that I didn't think about ?

Thanks,
Jeremie



--
View this message in context: http://maven.40175.n5.nabble.com/Use-quiet-reference-notation-for-properties-tp5806363.html
Sent from the Maven - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Use "quiet reference" notation for properties

Posted by Stephen Connolly <st...@gmail.com>.
Just define the default value in the <properties> section of the parent
pom...

On 24 September 2014 10:34, JeremieB. <Je...@gemalto.com> wrote:

> Hello,
>
> I wonder if there is any easy way to do the equivalent of Velocity "quiet
> references" with Maven poms ... ?
>
> Here is my use-case (in a corporate pom):
> - I set a property "label" containing some versions and reference to
> "${buildNumber}"
> - This property "${buildNumber}" is optionally set by the
> buildnumber-maven-plugin, ie the plugin is declared or not in the build
> depending on projects, ie if they want to use a build number or not
> The idea is to provide in a corporate pom a default label naming scheme,
> including a build number but only if it is used and defined by inheriting
> project.
>
> Problem is that if buildnumber-maven-plugin is not declared in a project,
> the "label" property contains "${buildNumber}" literally, whereas if
> undefined I would prefer it to be resolved as an empty string.
> In Velocity I would write something like:
> ${project.version}-$!{buildNumber}
>
> If I set a default value to empty string to the buildNumber property, then
> the buildnumber-maven-plugin doesn't override this value, so this is not a
> solution either.
>
> I could workaround this by using buildhelper:regex-property to remove the
> "${buildNumber}" literal expression if it wasn't resolved, but it seems a
> bit convoluted in a corporate pom, and requires proper ordering of plugins
> executions so I don't find this very reliable or maintainable.
> I kept it though, as all other solutions I could think of, imply more
> manual
> actions from users, or slow down the build too much... My main objective in
> the corporate pom being to be the least obtrusive possible.
>
> Solutions I thought about:
> - run the buildnumber-maven-plugin all the time, and set
> "revisionOnScmFailure" to empty string --> slows down all builds for an
> optional feature
> - add this buildnumber-maven-plugin declaration in a profile, and set
> "buildNumber" property to empty string if this profile is not activated -->
> complex profiles activation/deactivation requiring CLI switches
>
> Do you think there's something better that I didn't think about ?
>
> Thanks,
> Jeremie
>
>
>
> --
> View this message in context:
> http://maven.40175.n5.nabble.com/Use-quiet-reference-notation-for-properties-tp5806363.html
> Sent from the Maven - Users mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>