You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2008/12/20 21:08:59 UTC

svn commit: r728337 - in /maven/plugins/trunk/maven-invoker-plugin/src: it/pom-filtering/ it/pom-filtering/src/it/project/ main/java/org/apache/maven/plugin/invoker/ site/apt/examples/

Author: bentmann
Date: Sat Dec 20 12:08:59 2008
New Revision: 728337

URL: http://svn.apache.org/viewvc?rev=728337&view=rev
Log:
[MINVOKER-73] Support filter token @baseurl@

Modified:
    maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/pom.xml
    maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/src/it/project/pom.xml
    maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/verify.bsh
    maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java
    maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/filtering.apt.vm

Modified: maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/pom.xml?rev=728337&r1=728336&r2=728337&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/pom.xml (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/pom.xml Sat Dec 20 12:08:59 2008
@@ -58,6 +58,7 @@
             <itProperty>PASSED</itProperty>
             <project.nonExistingPomValue>PASSED</project.nonExistingPomValue>
             <basedir>FAILED</basedir>
+            <baseurl>FAILED</baseurl>
           </filterProperties>
         </configuration>
         <executions>

Modified: maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/src/it/project/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/src/it/project/pom.xml?rev=728337&r1=728336&r2=728337&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/src/it/project/pom.xml (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/src/it/project/pom.xml Sat Dec 20 12:08:59 2008
@@ -45,8 +45,9 @@
     <prop8>@project.nonExistingPomValue@</prop8>
     <!-- built-in properties must not be overridden by properties from the plugin configuration -->
     <prop9>@basedir@</prop9>
-    <prop10>@localRepository@</prop10>
-    <prop11>@localRepositoryUrl@</prop11>
+    <prop10>@baseurl@</prop10>
+    <prop11>@localRepository@</prop11>
+    <prop12>@localRepositoryUrl@</prop12>
   </properties>
 
   <build>

Modified: maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/verify.bsh?rev=728337&r1=728336&r2=728337&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/verify.bsh (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/pom-filtering/verify.bsh Sat Dec 20 12:08:59 2008
@@ -34,6 +34,8 @@
             "<prop6>PASSED</prop6>",
             "<prop7>PASSED</prop7>",
             "<prop8>PASSED</prop8>",
+            "<prop10>file:///",
+            "<prop12>file:///",
         };
     for ( String value : values )
     {
@@ -48,8 +50,10 @@
     String[] badValues = {
             "<prop9>@basedir@</prop9>",
             "<prop9>FAILED</prop9>",
-            "<prop10>@localRepository@</prop10>",
-            "<prop11>@localRepositoryUrl@</prop11>",
+            "<prop10>@baseurl@</prop10>",
+            "<prop10>FAILED</prop10>",
+            "<prop11>@localRepository@</prop11>",
+            "<prop12>@localRepositoryUrl@</prop12>",
         };
     for ( String value : badValues )
     {

Modified: maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java?rev=728337&r1=728336&r2=728337&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerMojo.java Sat Dec 20 12:08:59 2008
@@ -1661,25 +1661,37 @@
             props.putAll( filterProperties );
         }
         props.put( "basedir", this.project.getBasedir().getAbsolutePath() );
+        props.put( "baseurl", toUrl( this.project.getBasedir().getAbsolutePath() ) );
         if ( settings.getLocalRepository() != null )
         {
             props.put( "localRepository", settings.getLocalRepository() );
-            /*
-             * NOTE: Maven fails to properly handle percent-encoded "file:" URLs (WAGON-111) so don't use File.toURI()
-             * here and just do it the simple way.
-             */
-            String url = settings.getLocalRepository();
-            if ( !url.startsWith( "/" ) )
-            {
-                url = '/' + url;
-            }
-            url = "file://" + url.replace( '\\', '/' );
-            props.put( "localRepositoryUrl", url );
+            props.put( "localRepositoryUrl", toUrl( settings.getLocalRepository() ) );
         }
         return new CompositeMap( this.project, props );
     }
 
     /**
+     * Converts the specified filesystem path to a URL. The resulting URL has no trailing slash regardless whether the
+     * path denotes a file or a directory.
+     * 
+     * @param filename The filesystem path to convert, must not be <code>null</code>.
+     * @return The <code>file:</code> URL for the specified path, never <code>null</code>.
+     */
+    private static String toUrl( String filename )
+    {
+        /*
+         * NOTE: Maven fails to properly handle percent-encoded "file:" URLs (WAGON-111) so don't use File.toURI() here
+         * as-is but use the decoded path component in the URL.
+         */
+        String url = "file://" + new File( filename ).toURI().getPath();
+        if ( url.endsWith( "/" ) )
+        {
+            url = url.substring( 0, url.length() - 1 );
+        }
+        return url;
+    }
+
+    /**
      * Gets goal/profile names for the specified project, either directly from the plugin configuration or from an
      * external token file.
      * 

Modified: maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/filtering.apt.vm
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/filtering.apt.vm?rev=728337&r1=728336&r2=728337&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/filtering.apt.vm (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/filtering.apt.vm Sat Dec 20 12:08:59 2008
@@ -116,6 +116,8 @@
 *--------------------------+----------------------------------------------------------------------------------+--------+
 | <<<basedir>>>            | The absolute path to the project base directory of the main build.               | 1.1    |
 *--------------------------+----------------------------------------------------------------------------------+--------+
+| <<<baseurl>>>            | The <<<file:>>> URL to the project base directory of the main build.             | 1.4    |
+*--------------------------+----------------------------------------------------------------------------------+--------+
 | <<<localRepository>>>    | The absolute path to the local repository used for the main build.               | 1.2    |
 *--------------------------+----------------------------------------------------------------------------------+--------+
 | <<<localRepositoryUrl>>> | The <<<file:>>> URL to the local repository used for the main build.             | 1.3    |