[
https://issues.apache.org/jira/browse/MNG-5784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christian Schulte updated MNG-5784:
-----------------------------------
Description:
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
was:
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:
<!-- language: lang-xml -->
<manifestEntries>
<Project-Name>${project.name}</Project-Name>
</manifestEntries>
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)**
<!-- language: lang-xml -->
<?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>
**Example child/pom.xml: (module)**
<!-- language: lang-xml -->
<?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>
**Resulting manifest:**
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
**File structure:**
myproject/
pom.xml
child/
pom.xml
**Maven version:** 3.2.5
> 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
> 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)