You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Hervé Boutemy (JIRA)" <ji...@apache.org> on 2016/02/25 08:39:18 UTC

[jira] [Comment Edited] (MNG-5784) SO question regarding replacing name tag with ${project.parent.name} does not work in multi module builds.

    [ https://issues.apache.org/jira/browse/MNG-5784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15166861#comment-15166861 ] 

Hervé Boutemy edited comment on MNG-5784 at 2/25/16 7:38 AM:
-------------------------------------------------------------

just have a look at POM model http://maven.apache.org/ref/3-LATEST/maven-model/maven.html
{{project.parent}} is not the parent project, like the {{project.parent.name}} suggests, but it represents the {{<parent>}} pom.xml element

I suppose we could change the model builder algorithm http://maven.apache.org/ref/3-LATEST/maven-model-builder/ to have parent project available as something like {{project.parent.project}} in the inheritance assembly: don't know if there is a side effet I don't imagine yet...


was (Author: hboutemy):
just have a look at POM model http://maven.apache.org/ref/3-LATEST/maven-model/maven.html
{{project.parent}} is not the parent project, like the {{project.parent.name}} suggests, but it represents the {{<parent>}} pom.xml element

> SO question regarding replacing name tag with ${project.parent.name} does not work in multi module builds.
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: MNG-5784
>                 URL: https://issues.apache.org/jira/browse/MNG-5784
>             Project: Maven
>          Issue Type: Bug
>          Components: Inheritance and Interpolation
>            Reporter: Karl Heinz Marbaise
>            Assignee: Christian Schulte
>            Priority: Minor
>
> Based on the following stackoverflow question: http://stackoverflow.com/questions/29013184/maven-support-for-property-substitution-in-project-name
> The described behaviour looks wrong to me. 
> The question is: Is it bug?
> Copied content from SO:
> In a multi module project, I want to reuse the project name from the parent pom as part of the project name for each module. The only info I have managed to find says that property substitution is not allowed in /project/(groupId|artifactId|version), which suggests that it is allowed in /project/name.
> I have tried setting /project/name to `$\{project.parent.name} - Some Module` in the pom for a sub module, but it seems that this property is only substituted selectively: sometimes the literal string `$\{project.parent.name} - Some Module` is used, sometimes the substitution works.
> In the reactor summary, for example, the literal string is used:
> {code}
>     [INFO] ------------------------------------------------------------------------
>     [INFO] Reactor Summary:
>     [INFO]
>     [INFO] Glorious Parent .................................... SUCCESS [  0.016 s]
>     [INFO] ${project.parent.name} - Some Module ............... SUCCESS [  2.482 s]
>     [INFO] ------------------------------------------------------------------------
>     [INFO] BUILD SUCCESS
>     [INFO] ------------------------------------------------------------------------
> {code}
> Same thing for the archiver when creating a manifest file using `<addDefaultSpecificationEntries>` or `<addDefaultImplementationEntries>`.
> However, if I manually add manifest entries, the substitution happens:
> {code}
>     <manifestEntries>
>         <Project-Name>${project.name}</Project-Name>
>     </manifestEntries>
> {code}
> Results in `Project-Name: Glorious Parent - Some Module`
> Is there any way to know when or where the substitution will happen, or - preferrably - to make it happen everywhere, all the time?
> **Example pom.xml: (parent)**
> {code}
>     <?xml version="1.0" encoding="UTF-8"?>
>     <project 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/maven-v4_0_0.xsd">
>     	<modelVersion>4.0.0</modelVersion>
>     	
>     	<groupId>dummy-group-id</groupId>
>     	<artifactId>dummy-parent</artifactId>
>     	<version>1.0</version>
>     	<packaging>pom</packaging>
>     	<name>Glorious Parent</name>
>     	
>     	<properties>
>     		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>     	</properties>
>     
>       <modules>
>         <module>child</module>
>       </modules>
>     </project>
> {code}
> **Example child/pom.xml: (module)**
> {code}
>     <?xml version="1.0" encoding="UTF-8"?>
>     <project 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/maven-v4_0_0.xsd">
>     	<modelVersion>4.0.0</modelVersion>
>     	
>     	<parent>
>     		<groupId>dummy-group-id</groupId>
>     		<artifactId>dummy-parent</artifactId>
>     		<version>1.0</version>
>     	</parent>
>     
>     	<artifactId>dummy-test-artifact</artifactId>
>     	<name>${project.parent.name} - Some Module</name>
>     
>     	<build>
>     		<plugins>
>     			<plugin>
>     				<groupId>org.apache.maven.plugins</groupId>
>     				<artifactId>maven-jar-plugin</artifactId>
>     				<version>2.6</version>
>     				<configuration>
>     					<archive>
>     						<manifest>
>     							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
>     							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
>     						</manifest>
>     						<manifestEntries>
>     							<Project-Name>${project.name}</Project-Name>
>     						</manifestEntries>
>     					</archive>
>     				</configuration>
>     			</plugin>
>     		</plugins>
>     	</build>
>     	
>     </project>
> {code}
> **Resulting manifest:**
> {code}
>     Manifest-Version: 1.0
>     Implementation-Title: ${project.parent.name} - Some Module
>     Project-Name: Glorious Parent - Some Module
>     Implementation-Version: 1.0
>     Archiver-Version: Plexus Archiver
>     Built-By: developer
>     Specification-Title: ${project.parent.name} - Some Module
>     Implementation-Vendor-Id: dummy-group-id
>     Created-By: Apache Maven 3.2.5
>     Build-Jdk: 1.8.0_31
>     Specification-Version: 1.0
> {code}
> **File structure:**
>     myproject/
>       pom.xml
>       child/
>         pom.xml
> **Maven version:** 3.2.5



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)