You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2015/12/23 14:49:40 UTC
maven git commit: [MNG-5951] add an option to avoid path addition to
inherited URLs
Repository: maven
Updated Branches:
refs/heads/MNG-5951 [created] 8d85f5d09
[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
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/8d85f5d0
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/8d85f5d0
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/8d85f5d0
Branch: refs/heads/MNG-5951
Commit: 8d85f5d09498fe5bd46da31cda5b79bdaf886083
Parents: 901b1e8
Author: Hervé Boutemy <hb...@apache.org>
Authored: Wed Dec 23 14:49:20 2015 +0100
Committer: Hervé Boutemy <hb...@apache.org>
Committed: Wed Dec 23 14:49:20 2015 +0100
----------------------------------------------------------------------
.../DefaultInheritanceAssembler.java | 4 +-
.../maven/model/merge/MavenModelMerger.java | 12 +--
.../DefaultInheritanceAssemblerTest.java | 10 ++
.../poms/inheritance/no-append-urls-child.xml | 34 ++++++
.../inheritance/no-append-urls-expected.xml | 50 +++++++++
.../poms/inheritance/no-append-urls-parent.xml | 50 +++++++++
maven-model/src/main/mdo/maven.mdo | 106 ++++++++++++++++++-
7 files changed, 255 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/8d85f5d0/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
index 58d93a7..4382e68 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
@@ -139,12 +139,12 @@ 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;
}
http://git-wip-us.apache.org/repos/asf/maven/blob/8d85f5d0/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java b/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
index 0007af5..cae9d73 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/merge/MavenModelMerger.java
@@ -102,7 +102,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" ) );
}
}
@@ -466,7 +466,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" ) );
}
}
@@ -485,7 +485,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" ) );
}
}
@@ -504,7 +504,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" ) );
}
}
@@ -524,7 +524,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" ) );
}
}
@@ -670,7 +670,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;
}
http://git-wip-us.apache.org/repos/asf/maven/blob/8d85f5d0/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java
index 9d88f5f..d49e8df 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java
@@ -98,6 +98,16 @@ public class DefaultInheritanceAssemblerTest
}
/**
+ * 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...
* This is why MNG-5000 fix in code is marked as bad practice (uses file names)
http://git-wip-us.apache.org/repos/asf/maven/blob/8d85f5d0/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-child.xml
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-child.xml b/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-child.xml
new file mode 100644
index 0000000..d7cc4d0
--- /dev/null
+++ b/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-child.xml
@@ -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>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven/blob/8d85f5d0/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-expected.xml
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-expected.xml b/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-expected.xml
new file mode 100644
index 0000000..d2a8cfe
--- /dev/null
+++ b/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-expected.xml
@@ -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>
http://git-wip-us.apache.org/repos/asf/maven/blob/8d85f5d0/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-parent.xml
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-parent.xml b/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-parent.xml
new file mode 100644
index 0000000..e8bc165
--- /dev/null
+++ b/maven-model-builder/src/test/resources/poms/inheritance/no-append-urls-parent.xml
@@ -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>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/maven/blob/8d85f5d0/maven-model/src/main/mdo/maven.mdo
----------------------------------------------------------------------
diff --git a/maven-model/src/main/mdo/maven.mdo b/maven-model/src/main/mdo/maven.mdo
index 3f6b6d6..73c85a4 100644
--- a/maven-model/src/main/mdo/maven.mdo
+++ b/maven-model/src/main/mdo/maven.mdo
@@ -245,7 +245,21 @@
<description>
<![CDATA[
The URL to the project's homepage.
- <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId, 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>
@@ -630,6 +644,24 @@
]]>
</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>
+ </codeSegment>
</codeSegments>
</class>
<class java.clone="deep">
@@ -2172,12 +2204,46 @@
<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
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId, 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>
@@ -2605,12 +2671,46 @@
<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
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId, 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">