[ 
https://jira.codehaus.org/browse/MNG-5611?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Thornton updated MNG-5611:
---------------------------------

    Description: 
I need projects that declare my pom as their parent to be able to define 
project properties to customize essential components of their build, such as 
repositories, pluginRepositories, and distributionManagement.

For example:
{code:xml}
<properties>
    <repo.url>http://repo.mysite.com/nexus/content</repo.url>
    <repo.releases.enabled>true</repo.releases.enabled>
    <repo.snapshots.enabled>false</repo.snapshots.enabled>
    <repo.update>daily</repo.update>
</properties>

<repositories>
    <repository>
        <id>my-repo</id>
        <name>My Repository</name>
        <url>${repo.url}/groups/main-repo</url>
        <releases>
            <enabled>${repo.releases.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </releases>
        <snapshots>
            <enabled>${repo.snapshots.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </snapshots>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>my-plugin-repo</id>
        <name>My Plugin Repository</name>
        <url>${repo.url}/groups/plugin-repo</url>
        <releases>
            <enabled>${repo.releases.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </releases>
        <snapshots>
            <enabled>${repo.snapshots.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
{code}

The bug is that the effective pom correctly shows these properties as being 
interpolated for the above repositories, however the Aether RemoteRepository 
objects for the above definitions are created before the pom's properties are 
interpolated. This results in unexpected behavior that can only be understood 
by attaching a debugger to the Maven build process. The above example fails, 
for example, if the above pom's parent is in the repository whose properties 
haven't been interpolated yet.

The way I believe the properties interpolation process should work is that any 
time a project property is requested (as in the above examples), it should be 
interpolated based on the currently available project properties even if the 
entire project hierarchy has not yet been loaded.


  was:
I need projects that declare my pom as their parent to be able to define 
project properties to customize essential components of their build, such as 
repositories, pluginRepositories, and distributionManagement.

For example:
{code:xml}
<properties>
    <repo.url>http://repo.mysite.com/nexus/content</repo.url>
    <repo.releases.enabled>true</repo.releases.enabled>
    <repo.snapshots.enabled>false</repo.snapshots.enabled>
    <repo.update>daily</repo.update>
</properties>

<repositories>
    <repository>
        <id>my-repo</id>
        <name>My Repository</name>
        <url>${repo.url}/groups/main-repo</url>
        <releases>
            <enabled>${repo.releases.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </releases>
        <snapshots>
            <enabled>${repo.snapshots.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </snapshots>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>my-plugin-repo</id>
        <name>My Plugin Repository</name>
        <url>${repo.url}/groups/plugin-repo</url>
        <releases>
            <enabled>${repo.releases.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </releases>
        <snapshots>
            <enabled>${repo.snapshots.enabled}</enabled>
            <updatePolicy>${repo.update}</updatePolicy>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
{code}

The bug is that the effective pom correctly shows these properties as being 
interpolated for the above repositories, however the Aether RemoteRepository 
objects for the above definitions are created before the pom's properties are 
interpolated. This results in unexpected behavior that can only be understood 
by attaching a debugger to the Maven build process. The above example fails, 
for example, if the above pom's parent is in the repository whose properties 
haven't been interpolated yet.

The way I believe the properties interpolation process should work is that any 
time a project property is requested (as in the above examples), it should be 
interpolated based on the currently available properties.


> Project properties are interpolated too late to be used in several parts of 
> the pom
> -----------------------------------------------------------------------------------
>
>                 Key: MNG-5611
>                 URL: https://jira.codehaus.org/browse/MNG-5611
>             Project: Maven 2 & 3
>          Issue Type: Bug
>    Affects Versions: 3.2.1
>            Reporter: Robert Thornton
>
> I need projects that declare my pom as their parent to be able to define 
> project properties to customize essential components of their build, such as 
> repositories, pluginRepositories, and distributionManagement.
> For example:
> {code:xml}
> <properties>
>     <repo.url>http://repo.mysite.com/nexus/content</repo.url>
>     <repo.releases.enabled>true</repo.releases.enabled>
>     <repo.snapshots.enabled>false</repo.snapshots.enabled>
>     <repo.update>daily</repo.update>
> </properties>
> <repositories>
>     <repository>
>         <id>my-repo</id>
>         <name>My Repository</name>
>         <url>${repo.url}/groups/main-repo</url>
>         <releases>
>             <enabled>${repo.releases.enabled}</enabled>
>             <updatePolicy>${repo.update}</updatePolicy>
>         </releases>
>         <snapshots>
>             <enabled>${repo.snapshots.enabled}</enabled>
>             <updatePolicy>${repo.update}</updatePolicy>
>         </snapshots>
>     </repository>
> </repositories>
> <pluginRepositories>
>     <pluginRepository>
>         <id>my-plugin-repo</id>
>         <name>My Plugin Repository</name>
>         <url>${repo.url}/groups/plugin-repo</url>
>         <releases>
>             <enabled>${repo.releases.enabled}</enabled>
>             <updatePolicy>${repo.update}</updatePolicy>
>         </releases>
>         <snapshots>
>             <enabled>${repo.snapshots.enabled}</enabled>
>             <updatePolicy>${repo.update}</updatePolicy>
>         </snapshots>
>     </pluginRepository>
> </pluginRepositories>
> {code}
> The bug is that the effective pom correctly shows these properties as being 
> interpolated for the above repositories, however the Aether RemoteRepository 
> objects for the above definitions are created before the pom's properties are 
> interpolated. This results in unexpected behavior that can only be understood 
> by attaching a debugger to the Maven build process. The above example fails, 
> for example, if the above pom's parent is in the repository whose properties 
> haven't been interpolated yet.
> The way I believe the properties interpolation process should work is that 
> any time a project property is requested (as in the above examples), it 
> should be interpolated based on the currently available project properties 
> even if the entire project hierarchy has not yet been loaded.



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to