You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Timothy Reilly <tr...@prolifics.com> on 2007/05/22 23:20:33 UTC

Settings Variable expansion

Based on this information http://maven.apache.org/settings.html <http://maven.apache.org/settings.html>  <http://maven.apache.org/settings.html <http://maven.apache.org/settings.html> > 
I thought that variables and variable expansion would be available anywhere in a POM _and_ settings files?
Is this not the case - is it only pom xml that does expansion?
<quot>
They come in five different styles, _all accessible from the settings.xml_
</quot>
Currently my settings.xml has: 
<settings xmlns=http://maven.apache.org/POM/4.0.0
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/settings-1.0.0.xsd <http://maven.apache.org/xsd/settings-1.0.0.xsd> ">
<profiles>
<!-- desktop profile -->
<profile>
<id>windows</id>
<activation>
<activeByDefault>false</activeByDefault>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<environment>UNIT</environment>
</properties>
</profile>
<profile>
<id>test-resolution</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>my-unit</id>
<layout>default</layout>
<name>my-unit</name>
<releases>
<enabled>true</enabled>
<checksumPolicy>warn</checksumPolicy>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>
http://myurl:18080/my/${environment}/release <http://myurl:18080/my/${environment}/release> 
</url>
</repository>
</repositories>
</profile>
</profiles>
</settings>


But help:effective-settings shows the ${environment} isn't expanding.
<repository>
<releases>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>my-unit</id>
<name>my-unit</name>
<url>http://myurl:18080/my/${environment}/release</url>
</repository>

Am I doing something incorrectly?



Fwd: Settings Variable expansion

Posted by John Casey <jd...@commonjava.org>.
Just forwarding this response back to the users list, so everyone has  
a chance to read.

-john

Begin forwarded message:

> From: John Casey <jd...@commonjava.org>
> Date: May 24, 2007 9:55:28 AM EDT
> To: "Maven Developers List" <de...@maven.apache.org>
> Subject: Re: Settings Variable expansion
>
> System properties are basically the only thing available at the  
> time that the settings.xml is read. Since profile definitions are  
> read from the settings, it causes a sort of chicken-and-egg  
> scenario to try variable expansion with variables defined in profiles.
>
> Also, if we took a second round of processing, this time including  
> properties from profiles, we could in turn activate more profiles  
> (or deactivate some that had already donated new variables)...which  
> seems like an ambiguous, recursive mess.
>
> Also note that plugin configuration goes through a second round of  
> variable expansion, using values from the current build state in  
> addition to those used during initial POM and settings  
> interpolation. Anything that isn't resolved through direct variable  
> expansion in the settings or POM then has another chance at  
> resolution here...just FWIW. That will not include Repository  
> instances and so forth, which have already been constructed with  
> their various value expressions...only direct plugin configuration.
>
> Oh, and you also have the option of performing additional variable  
> expansion steps inside your own plugin, using that  
> RegexBasedInterpolator if you like...
>
> HTH,
>
> -john
>
>
> On May 24, 2007, at 12:56 AM, Timothy Reilly wrote:
>
>> I am reposting this question to dev list based on a (very) vague
>> understanding of how it working now:
>>
>> I see the settings runs through
>> org.codehaus.plexus.util.interpolation.RegexBasedInterpolator so I  
>> think
>> the answer to my question is that only system properties are  
>> available
>> for variable expansion in the settings files? And properties from an
>> activated profile would not be?
>>
>> Also, without really obsorbing the code yet... Would a second  
>> round of
>> processing be a valid enhancement request?
>> (In the second round I assume there is a different ValueSource which
>> would take properties defined by an activated profile?)
>>
>>
>>> -----Original Message-----
>>> From: Timothy Reilly
>>> Sent: Tuesday, May 22, 2007 5:21 PM
>>> To: users@maven.apache.org
>>> Subject: Settings Variable expansion
>>>
>>> Based on this information
>>> http://maven.apache.org/settings.html
>>> <http://maven.apache.org/settings.html>
>>> <http://maven.apache.org/settings.html
>>> <http://maven.apache.org/settings.html> > I thought that
>>> variables and variable expansion would be available anywhere
>>> in a POM _and_ settings files?
>>> Is this not the case - is it only pom xml that does expansion?
>>> <quot>
>>> They come in five different styles, _all accessible from the
>>> settings.xml_ </quot> Currently my settings.xml has:
>>> <settings xmlns=http://maven.apache.org/POM/4.0.0
>>> xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>>> http://maven.apache.org/xsd/settings-1.0.0.xsd
>>> <http://maven.apache.org/xsd/settings-1.0.0.xsd> "> <profiles>
>>> <!-- desktop profile -->
>>> <profile>
>>> <id>windows</id>
>>> <activation>
>>> <activeByDefault>false</activeByDefault>
>>> <os>
>>> <family>windows</family>
>>> </os>
>>> </activation>
>>> <properties>
>>> <environment>UNIT</environment>
>>> </properties>
>>> </profile>
>>> <profile>
>>> <id>test-resolution</id>
>>> <activation>
>>> <activeByDefault>true</activeByDefault>
>>> </activation>
>>> <repositories>
>>> <repository>
>>> <id>my-unit</id>
>>> <layout>default</layout>
>>> <name>my-unit</name>
>>> <releases>
>>> <enabled>true</enabled>
>>> <checksumPolicy>warn</checksumPolicy>
>>> <updatePolicy>daily</updatePolicy>
>>> </releases>
>>> <snapshots>
>>> <enabled>false</enabled>
>>> </snapshots>
>>> <url>
>>> http://myurl:18080/my/${environment}/release
>>> <http://myurl:18080/my/${environment}/release>
>>> </url>
>>> </repository>
>>> </repositories>
>>> </profile>
>>> </profiles>
>>> </settings>
>>>
>>>
>>> But help:effective-settings shows the ${environment} isn't  
>>> expanding.
>>> <repository>
>>> <releases>
>>> <updatePolicy>daily</updatePolicy>
>>> <checksumPolicy>warn</checksumPolicy>
>>> </releases>
>>> <snapshots>
>>> <enabled>false</enabled>
>>> </snapshots>
>>> <id>my-unit</id>
>>> <name>my-unit</name>
>>> <url>http://myurl:18080/my/${environment}/release</url>
>>> </repository>
>>>
>>> Am I doing something incorrectly?
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>
> ---
> John Casey
> Committer and PMC Member, Apache Maven
> mail: jdcasey at commonjava dot org
> blog: http://www.ejlife.net/blogs/john
>
>

---
John Casey
Committer and PMC Member, Apache Maven
mail: jdcasey at commonjava dot org
blog: http://www.ejlife.net/blogs/john



Re: Settings Variable expansion

Posted by John Casey <jd...@commonjava.org>.
System properties are basically the only thing available at the time  
that the settings.xml is read. Since profile definitions are read  
from the settings, it causes a sort of chicken-and-egg scenario to  
try variable expansion with variables defined in profiles.

Also, if we took a second round of processing, this time including  
properties from profiles, we could in turn activate more profiles (or  
deactivate some that had already donated new variables)...which seems  
like an ambiguous, recursive mess.

Also note that plugin configuration goes through a second round of  
variable expansion, using values from the current build state in  
addition to those used during initial POM and settings interpolation.  
Anything that isn't resolved through direct variable expansion in the  
settings or POM then has another chance at resolution here...just  
FWIW. That will not include Repository instances and so forth, which  
have already been constructed with their various value  
expressions...only direct plugin configuration.

Oh, and you also have the option of performing additional variable  
expansion steps inside your own plugin, using that  
RegexBasedInterpolator if you like...

HTH,

-john


On May 24, 2007, at 12:56 AM, Timothy Reilly wrote:

> I am reposting this question to dev list based on a (very) vague
> understanding of how it working now:
>
> I see the settings runs through
> org.codehaus.plexus.util.interpolation.RegexBasedInterpolator so I  
> think
> the answer to my question is that only system properties are available
> for variable expansion in the settings files? And properties from an
> activated profile would not be?
>
> Also, without really obsorbing the code yet... Would a second round of
> processing be a valid enhancement request?
> (In the second round I assume there is a different ValueSource which
> would take properties defined by an activated profile?)
>
>
>> -----Original Message-----
>> From: Timothy Reilly
>> Sent: Tuesday, May 22, 2007 5:21 PM
>> To: users@maven.apache.org
>> Subject: Settings Variable expansion
>>
>> Based on this information
>> http://maven.apache.org/settings.html
>> <http://maven.apache.org/settings.html>
>> <http://maven.apache.org/settings.html
>> <http://maven.apache.org/settings.html> > I thought that
>> variables and variable expansion would be available anywhere
>> in a POM _and_ settings files?
>> Is this not the case - is it only pom xml that does expansion?
>> <quot>
>> They come in five different styles, _all accessible from the
>> settings.xml_ </quot> Currently my settings.xml has:
>> <settings xmlns=http://maven.apache.org/POM/4.0.0
>> xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>> http://maven.apache.org/xsd/settings-1.0.0.xsd
>> <http://maven.apache.org/xsd/settings-1.0.0.xsd> "> <profiles>
>> <!-- desktop profile -->
>> <profile>
>> <id>windows</id>
>> <activation>
>> <activeByDefault>false</activeByDefault>
>> <os>
>> <family>windows</family>
>> </os>
>> </activation>
>> <properties>
>> <environment>UNIT</environment>
>> </properties>
>> </profile>
>> <profile>
>> <id>test-resolution</id>
>> <activation>
>> <activeByDefault>true</activeByDefault>
>> </activation>
>> <repositories>
>> <repository>
>> <id>my-unit</id>
>> <layout>default</layout>
>> <name>my-unit</name>
>> <releases>
>> <enabled>true</enabled>
>> <checksumPolicy>warn</checksumPolicy>
>> <updatePolicy>daily</updatePolicy>
>> </releases>
>> <snapshots>
>> <enabled>false</enabled>
>> </snapshots>
>> <url>
>> http://myurl:18080/my/${environment}/release
>> <http://myurl:18080/my/${environment}/release>
>> </url>
>> </repository>
>> </repositories>
>> </profile>
>> </profiles>
>> </settings>
>>
>>
>> But help:effective-settings shows the ${environment} isn't expanding.
>> <repository>
>> <releases>
>> <updatePolicy>daily</updatePolicy>
>> <checksumPolicy>warn</checksumPolicy>
>> </releases>
>> <snapshots>
>> <enabled>false</enabled>
>> </snapshots>
>> <id>my-unit</id>
>> <name>my-unit</name>
>> <url>http://myurl:18080/my/${environment}/release</url>
>> </repository>
>>
>> Am I doing something incorrectly?
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>

---
John Casey
Committer and PMC Member, Apache Maven
mail: jdcasey at commonjava dot org
blog: http://www.ejlife.net/blogs/john



RE: Settings Variable expansion

Posted by Timothy Reilly <tr...@prolifics.com>.
I am reposting this question to dev list based on a (very) vague
understanding of how it working now:

I see the settings runs through
org.codehaus.plexus.util.interpolation.RegexBasedInterpolator so I think
the answer to my question is that only system properties are available
for variable expansion in the settings files? And properties from an
activated profile would not be?

Also, without really obsorbing the code yet... Would a second round of
processing be a valid enhancement request? 
(In the second round I assume there is a different ValueSource which
would take properties defined by an activated profile?)


> -----Original Message-----
> From: Timothy Reilly 
> Sent: Tuesday, May 22, 2007 5:21 PM
> To: users@maven.apache.org
> Subject: Settings Variable expansion
> 
> Based on this information 
> http://maven.apache.org/settings.html 
> <http://maven.apache.org/settings.html>  
> <http://maven.apache.org/settings.html 
> <http://maven.apache.org/settings.html> > I thought that 
> variables and variable expansion would be available anywhere 
> in a POM _and_ settings files?
> Is this not the case - is it only pom xml that does expansion?
> <quot>
> They come in five different styles, _all accessible from the 
> settings.xml_ </quot> Currently my settings.xml has: 
> <settings xmlns=http://maven.apache.org/POM/4.0.0
> xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/xsd/settings-1.0.0.xsd 
> <http://maven.apache.org/xsd/settings-1.0.0.xsd> "> <profiles>
> <!-- desktop profile -->
> <profile>
> <id>windows</id>
> <activation>
> <activeByDefault>false</activeByDefault>
> <os>
> <family>windows</family>
> </os>
> </activation>
> <properties>
> <environment>UNIT</environment>
> </properties>
> </profile>
> <profile>
> <id>test-resolution</id>
> <activation>
> <activeByDefault>true</activeByDefault>
> </activation>
> <repositories>
> <repository>
> <id>my-unit</id>
> <layout>default</layout>
> <name>my-unit</name>
> <releases>
> <enabled>true</enabled>
> <checksumPolicy>warn</checksumPolicy>
> <updatePolicy>daily</updatePolicy>
> </releases>
> <snapshots>
> <enabled>false</enabled>
> </snapshots>
> <url>
> http://myurl:18080/my/${environment}/release 
> <http://myurl:18080/my/${environment}/release>
> </url>
> </repository>
> </repositories>
> </profile>
> </profiles>
> </settings>
> 
> 
> But help:effective-settings shows the ${environment} isn't expanding.
> <repository>
> <releases>
> <updatePolicy>daily</updatePolicy>
> <checksumPolicy>warn</checksumPolicy>
> </releases>
> <snapshots>
> <enabled>false</enabled>
> </snapshots>
> <id>my-unit</id>
> <name>my-unit</name>
> <url>http://myurl:18080/my/${environment}/release</url>
> </repository>
> 
> Am I doing something incorrectly?
> 
> 
> 

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