mirror of https://github.com/apache/maven.git
[MNG-5951] add an option to avoid path addition to inherited URLs
This is done as child.inherit.append.path XML attribute on 3 locations: - project, for project.url - project.distributionManagement.site for its url - project.scm, for the 3 scm urls in one unique config
This commit is contained in:
parent
ce6cc5d008
commit
2e8e09f25b
|
@ -144,12 +144,13 @@ public class DefaultInheritanceAssembler
|
|||
{
|
||||
|
||||
@Override
|
||||
protected String extrapolateChildUrl( String parentUrl, Map<Object, Object> context )
|
||||
protected String extrapolateChildUrl( String parentUrl, boolean appendPath, Map<Object, Object> context )
|
||||
{
|
||||
Object childDirectory = context.get( CHILD_DIRECTORY );
|
||||
Object childPathAdjustment = context.get( CHILD_PATH_ADJUSTMENT );
|
||||
|
||||
if ( StringUtils.isBlank( parentUrl ) || childDirectory == null || childPathAdjustment == null )
|
||||
if ( StringUtils.isBlank( parentUrl ) || childDirectory == null || childPathAdjustment == null
|
||||
|| !appendPath )
|
||||
{
|
||||
return parentUrl;
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ public class MavenModelMerger
|
|||
}
|
||||
else if ( target.getUrl() == null )
|
||||
{
|
||||
target.setUrl( extrapolateChildUrl( src, context ) );
|
||||
target.setUrl( extrapolateChildUrl( src, source.isChildInheritAppendPath(), context ) );
|
||||
target.setLocation( "url", source.getLocation( "url" ) );
|
||||
}
|
||||
}
|
||||
|
@ -467,7 +467,7 @@ public class MavenModelMerger
|
|||
}
|
||||
else if ( target.getUrl() == null )
|
||||
{
|
||||
target.setUrl( extrapolateChildUrl( src, context ) );
|
||||
target.setUrl( extrapolateChildUrl( src, source.isChildInheritAppendPath(), context ) );
|
||||
target.setLocation( "url", source.getLocation( "url" ) );
|
||||
}
|
||||
}
|
||||
|
@ -486,7 +486,7 @@ public class MavenModelMerger
|
|||
}
|
||||
else if ( target.getUrl() == null )
|
||||
{
|
||||
target.setUrl( extrapolateChildUrl( src, context ) );
|
||||
target.setUrl( extrapolateChildUrl( src, source.isChildInheritAppendPath(), context ) );
|
||||
target.setLocation( "url", source.getLocation( "url" ) );
|
||||
}
|
||||
}
|
||||
|
@ -505,7 +505,7 @@ public class MavenModelMerger
|
|||
}
|
||||
else if ( target.getConnection() == null )
|
||||
{
|
||||
target.setConnection( extrapolateChildUrl( src, context ) );
|
||||
target.setConnection( extrapolateChildUrl( src, source.isChildInheritAppendPath(), context ) );
|
||||
target.setLocation( "connection", source.getLocation( "connection" ) );
|
||||
}
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ public class MavenModelMerger
|
|||
}
|
||||
else if ( target.getDeveloperConnection() == null )
|
||||
{
|
||||
target.setDeveloperConnection( extrapolateChildUrl( src, context ) );
|
||||
target.setDeveloperConnection( extrapolateChildUrl( src, source.isChildInheritAppendPath(), context ) );
|
||||
target.setLocation( "developerConnection", source.getLocation( "developerConnection" ) );
|
||||
}
|
||||
}
|
||||
|
@ -671,7 +671,7 @@ public class MavenModelMerger
|
|||
return exclusion.getGroupId() + ':' + exclusion.getArtifactId();
|
||||
}
|
||||
|
||||
protected String extrapolateChildUrl( String parentUrl, Map<Object, Object> context )
|
||||
protected String extrapolateChildUrl( String parentUrl, boolean appendPath, Map<Object, Object> context )
|
||||
{
|
||||
return parentUrl;
|
||||
}
|
||||
|
|
|
@ -98,6 +98,16 @@ public class DefaultInheritanceAssemblerTest
|
|||
testInheritance( "flat-urls" );
|
||||
}
|
||||
|
||||
/**
|
||||
* MNG-5951 child.inherit.append.path="false" test
|
||||
* @throws Exception
|
||||
*/
|
||||
public void testNoAppendUrls()
|
||||
throws Exception
|
||||
{
|
||||
testInheritance( "no-append-urls" );
|
||||
}
|
||||
|
||||
/**
|
||||
* Tricky case: flat directory structure, but child directory != artifactId.
|
||||
* Model interpolation does not give same result when calculated from build or from repo...
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<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/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>inheritance</groupId>
|
||||
<artifactId>parent</artifactId>
|
||||
<version>11-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>inheritance</artifactId><!-- same as directory name -->
|
||||
<name>Model urls inheritance test child</name>
|
||||
</project>
|
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<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/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>inheritance</groupId>
|
||||
<artifactId>parent</artifactId>
|
||||
<version>11-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<groupId>inheritance</groupId>
|
||||
<artifactId>inheritance</artifactId>
|
||||
<version>11-SNAPSHOT</version>
|
||||
<name>Model urls inheritance test child</name>
|
||||
<description>MNG-5951 child.inherit.append.path="false" for each url to avoid automatic path addition when inheriting</description>
|
||||
|
||||
<!-- 5 inherited urls without anything added to parent -->
|
||||
<url>http://www.apache.org/path/to/parent/</url>
|
||||
<scm>
|
||||
<connection>scm:my-scm:http://domain.org/base</connection>
|
||||
<developerConnection>scm:my-scm:https://domain.org/base/</developerConnection>
|
||||
<url>https://domain.org/base</url>
|
||||
</scm>
|
||||
<distributionManagement>
|
||||
<site>
|
||||
<url>scp://scp.domain.org/base/</url>
|
||||
</site>
|
||||
</distributionManagement>
|
||||
</project>
|
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<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/xsd/maven-4.0.0.xsd"
|
||||
child.inherit.append.path="false">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>inheritance</groupId>
|
||||
<artifactId>parent</artifactId>
|
||||
<version>11-SNAPSHOT</version>
|
||||
|
||||
<name>Model urls inheritance test parent</name>
|
||||
<description>MNG-5951 child.inherit.append.path="false" for each url to avoid automatic path addition when inheriting</description>
|
||||
|
||||
<modules>
|
||||
<module>../inheritance</module>
|
||||
</modules>
|
||||
|
||||
<!-- 5 urls in the pom to configure for not adding path -->
|
||||
<url>http://www.apache.org/path/to/parent/</url>
|
||||
<scm child.inherit.append.path="false">
|
||||
<connection>scm:my-scm:http://domain.org/base</connection>
|
||||
<developerConnection>scm:my-scm:https://domain.org/base/</developerConnection>
|
||||
<url>https://domain.org/base</url>
|
||||
</scm>
|
||||
<distributionManagement>
|
||||
<site child.inherit.append.path="false">
|
||||
<url>scp://scp.domain.org/base/</url>
|
||||
</site>
|
||||
</distributionManagement>
|
||||
</project>
|
|
@ -184,7 +184,21 @@
|
|||
<description>
|
||||
<![CDATA[
|
||||
The URL to the project's homepage.
|
||||
<br><b>Default value is</b>: parent value [+ path adjustment] + (artifactId or <code>project.directory</code> property)
|
||||
<br><b>Default value is</b>: parent value [+ path adjustment] + (artifactId or <code>project.directory</code> property), or just parent value if
|
||||
<code>child.urls.inherit.append.path="false"</code>
|
||||
]]>
|
||||
</description>
|
||||
<type>String</type>
|
||||
</field>
|
||||
<field xml.attribute="true" xml.tagName="child.inherit.append.path">
|
||||
<name>childInheritAppendPath</name>
|
||||
<version>4.0.0+</version>
|
||||
<description>
|
||||
<![CDATA[
|
||||
When childs inherit from urls, append path or not?. Note: While the type
|
||||
of this field is <code>String</code> for technical reasons, the semantic type is actually
|
||||
<code>Boolean</code>
|
||||
<br /><b>Default value is</b>: <code>true</code>
|
||||
]]>
|
||||
</description>
|
||||
<type>String</type>
|
||||
|
@ -400,6 +414,22 @@
|
|||
public String toString()
|
||||
{
|
||||
return getId();
|
||||
}
|
||||
]]>
|
||||
</code>
|
||||
</codeSegment>
|
||||
<codeSegment>
|
||||
<version>4.0.0+</version>
|
||||
<code>
|
||||
<![CDATA[
|
||||
public boolean isChildInheritAppendPath()
|
||||
{
|
||||
return ( childInheritAppendPath != null ) ? Boolean.parseBoolean( childInheritAppendPath ) : true;
|
||||
}
|
||||
|
||||
public void setChildInheritAppendPath( boolean childInheritAppendPath )
|
||||
{
|
||||
this.childInheritAppendPath = String.valueOf( childInheritAppendPath );
|
||||
}
|
||||
]]>
|
||||
</code>
|
||||
|
@ -1613,12 +1643,44 @@
|
|||
<description>
|
||||
<![CDATA[
|
||||
The URL to the project's browsable SCM repository, such as ViewVC or Fisheye.
|
||||
<br><b>Default value is</b>: parent value [+ path adjustment] + (artifactId or <code>project.directory</code> property)
|
||||
<br><b>Default value is</b>: parent value [+ path adjustment] + (artifactId or <code>project.directory</code> property), or just parent value if
|
||||
<code>child.urls.inherit.append.path="false"</code>
|
||||
]]>
|
||||
</description>
|
||||
<type>String</type>
|
||||
</field>
|
||||
<field xml.attribute="true" xml.tagName="child.inherit.append.path">
|
||||
<name>childInheritAppendPath</name>
|
||||
<version>4.0.0+</version>
|
||||
<description>
|
||||
<![CDATA[
|
||||
When childs inherit from urls, append path or not?. Note: While the type
|
||||
of this field is <code>String</code> for technical reasons, the semantic type is actually
|
||||
<code>Boolean</code>
|
||||
<br /><b>Default value is</b>: <code>true</code>
|
||||
]]>
|
||||
</description>
|
||||
<type>String</type>
|
||||
</field>
|
||||
</fields>
|
||||
<codeSegments>
|
||||
<codeSegment>
|
||||
<version>4.0.0+</version>
|
||||
<code>
|
||||
<![CDATA[
|
||||
public boolean isChildInheritAppendPath()
|
||||
{
|
||||
return ( childInheritAppendPath != null ) ? Boolean.parseBoolean( childInheritAppendPath ) : true;
|
||||
}
|
||||
|
||||
public void setChildInheritAppendPath( boolean childInheritAppendPath )
|
||||
{
|
||||
this.childInheritAppendPath = String.valueOf( childInheritAppendPath );
|
||||
}
|
||||
]]>
|
||||
</code>
|
||||
</codeSegment>
|
||||
</codeSegments>
|
||||
</class>
|
||||
<class>
|
||||
<name>FileSet</name>
|
||||
|
@ -1938,12 +2000,44 @@
|
|||
<description>
|
||||
<![CDATA[
|
||||
The url of the location where website is deployed, in the form <code>protocol://hostname/path</code>.
|
||||
<br><b>Default value is</b>: parent value [+ path adjustment] + (artifactId or <code>project.directory</code> property)
|
||||
<br><b>Default value is</b>: parent value [+ path adjustment] + (artifactId or <code>project.directory</code> property), or just parent value if
|
||||
<code>child.urls.inherit.append.path="false"</code>
|
||||
]]>
|
||||
</description>
|
||||
<type>String</type>
|
||||
</field>
|
||||
<field xml.attribute="true" xml.tagName="child.inherit.append.path">
|
||||
<name>childInheritAppendPath</name>
|
||||
<version>4.0.0+</version>
|
||||
<description>
|
||||
<![CDATA[
|
||||
When childs inherit from urls, append path or not?. Note: While the type
|
||||
of this field is <code>String</code> for technical reasons, the semantic type is actually
|
||||
<code>Boolean</code>
|
||||
<br /><b>Default value is</b>: <code>true</code>
|
||||
]]>
|
||||
</description>
|
||||
<type>String</type>
|
||||
</field>
|
||||
</fields>
|
||||
<codeSegments>
|
||||
<codeSegment>
|
||||
<version>4.0.0+</version>
|
||||
<code>
|
||||
<![CDATA[
|
||||
public boolean isChildInheritAppendPath()
|
||||
{
|
||||
return ( childInheritAppendPath != null ) ? Boolean.parseBoolean( childInheritAppendPath ) : true;
|
||||
}
|
||||
|
||||
public void setChildInheritAppendPath( boolean childInheritAppendPath )
|
||||
{
|
||||
this.childInheritAppendPath = String.valueOf( childInheritAppendPath );
|
||||
}
|
||||
]]>
|
||||
</code>
|
||||
</codeSegment>
|
||||
</codeSegments>
|
||||
</class>
|
||||
|
||||
<class java.clone="deep">
|
||||
|
|
Loading…
Reference in New Issue