Author: jdcasey
Date: Wed Aug  3 13:43:58 2005
New Revision: 227259

URL: http://svn.apache.org/viewcvs?rev=227259&view=rev
Log:
Resolving: MNG-282


Added:
    
maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
   (with props)
    maven/components/trunk/maven-core-it/it0045/
    maven/components/trunk/maven-core-it/it0045/cli-options.txt   (with props)
    maven/components/trunk/maven-core-it/it0045/expected-results.txt   (with 
props)
    maven/components/trunk/maven-core-it/it0045/goals.txt   (with props)
    maven/components/trunk/maven-core-it/it0045/pom.xml   (with props)
    maven/components/trunk/maven-core-it/it0045/prebuild-hook.txt   (with props)
    maven/components/trunk/maven-core-it/it0045/subproject/
    maven/components/trunk/maven-core-it/it0045/subproject/pom.xml   (with 
props)
Modified:
    
maven/components/trunk/maven-archetype/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java
    maven/components/trunk/maven-core-it/README.txt
    maven/components/trunk/maven-core-it/integration-tests.txt
    maven/components/trunk/maven-core-it/it0044/pom.xml
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java

Modified: 
maven/components/trunk/maven-archetype/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-archetype/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java?rev=227259&r1=227258&r2=227259&view=diff
==============================================================================
--- 
maven/components/trunk/maven-archetype/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java
 (original)
+++ 
maven/components/trunk/maven-archetype/maven-archetype-plugin/src/main/java/org/apache/maven/plugin/archetype/MavenArchetypeMojo.java
 Wed Aug  3 13:43:58 2005
@@ -33,6 +33,7 @@
  * Builds archetype containers.
  *
  * @goal create
+ * @requiresProject false
  */
 public class MavenArchetypeMojo
     extends AbstractMojo

Added: 
maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java?rev=227259&view=auto
==============================================================================
--- 
maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
 (added)
+++ 
maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
 Wed Aug  3 13:43:58 2005
@@ -0,0 +1,143 @@
+package org.apache.maven.plugin.coreit;
+
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * Mojo which touches a file without requiring a project.
+ * 
+ * @goal light-touch
+ * @requiresProject false
+ * 
+ */
+public class NoProjectMojo
+    extends AbstractMojo
+{
+    /**
+     * @parameter expression="${project}"
+     */
+    private MavenProject project;
+
+    /**
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private String outputDirectory;
+
+    /** Test setting of plugin-artifacts on the PluginDescriptor instance.
+     * @parameter expression="${plugin.artifactMap}"
+     * @required
+     */
+    private Map pluginArtifacts;
+
+    /**
+     * @parameter expression="target/test-basedir-alignment"
+     */
+    private File basedirAlignmentDirectory;
+
+    /**
+     * @parameter
+     */
+    private String pluginItem = "foo";
+
+    /**
+     * @parameter
+     */
+    private String goalItem = "bar";
+    
+    /**
+     * @parameter expression="${artifactToFile}"
+     */
+    private String artifactToFile;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        touch( new File( outputDirectory ), "touch.txt" );
+
+        // This parameter should be aligned to the basedir as the parameter 
type is specified
+        // as java.io.File
+
+        if ( basedirAlignmentDirectory.getPath().equals( 
"target/test-basedir-alignment" ) )
+        {
+            throw new MojoExecutionException( "basedirAlignmentDirectory not 
aligned" );
+        }
+        
+        touch( basedirAlignmentDirectory, "touch.txt" );
+        
+        File outDir = new File( outputDirectory );
+
+        // Test parameter setting
+        if ( pluginItem != null )
+        {
+            touch( outDir, pluginItem );
+        }
+
+        if ( goalItem != null )
+        {
+            touch( outDir, goalItem );
+        }
+        
+        if ( artifactToFile != null )
+        {
+            Artifact artifact = (Artifact) pluginArtifacts.get( artifactToFile 
);
+            
+            File artifactFile = artifact.getFile();
+            
+            String filename = artifactFile.getAbsolutePath().replace('/', 
'_').replace(':', '_') + ".txt";
+            
+            touch( outDir, filename );
+        }
+
+        project.getBuild().setFinalName( "coreitified" );
+    }
+
+    private void touch( File dir, String file )
+        throws MojoExecutionException
+    {
+        try
+        {
+             if ( !dir.exists() )
+             {
+                 dir.mkdirs();
+             }
+             
+             File touch = new File( dir, file );
+             
+             getLog().info( "Touching: " + touch );
+     
+             FileWriter w = new FileWriter( touch );
+             
+             w.write( file );
+             
+             w.close();
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Error touching file", e );
+        }
+    }
+}

Propchange: 
maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/NoProjectMojo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-core-it/README.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/README.txt?rev=227259&r1=227258&r2=227259&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/README.txt (original)
+++ maven/components/trunk/maven-core-it/README.txt Wed Aug  3 13:43:58 2005
@@ -126,6 +126,8 @@
 
 it0044: Test --settings CLI option
 
+it0045: Test non-reactor behavior when plugin declares "@requiresProject false"
+
 -------------------------------------------------------------------------------
 
 - generated sources

Modified: maven/components/trunk/maven-core-it/integration-tests.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=227259&r1=227258&r2=227259&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/integration-tests.txt (original)
+++ maven/components/trunk/maven-core-it/integration-tests.txt Wed Aug  3 
13:43:58 2005
@@ -1,3 +1,4 @@
+it0045
 it0044
 it0043
 it0042

Modified: maven/components/trunk/maven-core-it/it0044/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0044/pom.xml?rev=227259&r1=227258&r2=227259&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it/it0044/pom.xml (original)
+++ maven/components/trunk/maven-core-it/it0044/pom.xml Wed Aug  3 13:43:58 2005
@@ -1,7 +1,7 @@
 <model>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven</groupId>
-  <artifactId>maven-it0023</artifactId>
+  <artifactId>maven-it0044</artifactId>
   <version>1.0-SNAPSHOT</version>
   
   <build>

Added: maven/components/trunk/maven-core-it/it0045/cli-options.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0045/cli-options.txt?rev=227259&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0045/cli-options.txt (added)
+++ maven/components/trunk/maven-core-it/it0045/cli-options.txt Wed Aug  3 
13:43:58 2005
@@ -0,0 +1 @@
+--no-plugin-registry --check-plugin-latest

Propchange: maven/components/trunk/maven-core-it/it0045/cli-options.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0045/cli-options.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0045/expected-results.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0045/expected-results.txt?rev=227259&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0045/expected-results.txt (added)
+++ maven/components/trunk/maven-core-it/it0045/expected-results.txt Wed Aug  3 
13:43:58 2005
@@ -0,0 +1,2 @@
+target/touch.txt
+!subproject/target/touch.txt

Propchange: maven/components/trunk/maven-core-it/it0045/expected-results.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0045/expected-results.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0045/goals.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0045/goals.txt?rev=227259&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0045/goals.txt (added)
+++ maven/components/trunk/maven-core-it/it0045/goals.txt Wed Aug  3 13:43:58 
2005
@@ -0,0 +1 @@
+core-it:light-touch

Propchange: maven/components/trunk/maven-core-it/it0045/goals.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0045/goals.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0045/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0045/pom.xml?rev=227259&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0045/pom.xml (added)
+++ maven/components/trunk/maven-core-it/it0045/pom.xml Wed Aug  3 13:43:58 2005
@@ -0,0 +1,17 @@
+<model>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven</groupId>
+  <artifactId>maven-core-it0009</artifactId>
+  <packaging>pom</packaging>
+  <version>1.0</version>
+  <pluginRepositories>
+    <pluginRepository>
+      <id>snapshots</id>
+      <name>Maven Central Plugins Development Repository</name>
+      <url>http://snapshots.maven.codehaus.org/maven2/plugins</url>
+    </pluginRepository>
+  </pluginRepositories>
+  <modules>
+    <module>subproject</module>
+  </modules>
+</model>

Propchange: maven/components/trunk/maven-core-it/it0045/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0045/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0045/prebuild-hook.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0045/prebuild-hook.txt?rev=227259&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0045/prebuild-hook.txt (added)
+++ maven/components/trunk/maven-core-it/it0045/prebuild-hook.txt Wed Aug  3 
13:43:58 2005
@@ -0,0 +1 @@
+#rm 
${artifact:org.apache.maven.plugins:maven-core-it-plugin:1.0-SNAPSHOT:maven-plugin}

Propchange: maven/components/trunk/maven-core-it/it0045/prebuild-hook.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0045/prebuild-hook.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-core-it/it0045/subproject/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0045/subproject/pom.xml?rev=227259&view=auto
==============================================================================
--- maven/components/trunk/maven-core-it/it0045/subproject/pom.xml (added)
+++ maven/components/trunk/maven-core-it/it0045/subproject/pom.xml Wed Aug  3 
13:43:58 2005
@@ -0,0 +1,10 @@
+<model>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven</groupId>
+    <artifactId>maven-core-it0045</artifactId>
+    <version>1.0</version>
+  </parent>
+  <artifactId>maven-core-it0045-subproject</artifactId>
+  <packaging>jar</packaging>
+</model>

Propchange: maven/components/trunk/maven-core-it/it0045/subproject/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core-it/it0045/subproject/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=227259&r1=227258&r2=227259&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Wed Aug  3 13:43:58 2005
@@ -140,14 +140,15 @@
 
             projects = collectProjects( files, request.getLocalRepository(), 
request.isRecursive(),
                                         request.getSettings() );
-
+            
             // the reasoning here is that the list is still unsorted according 
to dependency, so the first project
             // SHOULD BE the top-level, or the one we want to start with if 
we're doing an aggregated build.
 
             if ( !projects.isEmpty() )
             {
                 // TODO: !![jc; 28-jul-2005] check this; if we're using '-r' 
and there are aggregator tasks, this will result in weirdness.
-                topLevelProject = (MavenProject) projects.get( 0 );
+                topLevelProject = findTopLevelProject( projects, 
request.getPomFile() );
+                
                 projects = ProjectSorter.getSortedProjects( projects );
             }
             else
@@ -266,6 +267,49 @@
 
             throw e;
         }
+    }
+
+    private MavenProject findTopLevelProject( List projects, String 
customPomPath ) throws IOException
+    {
+        File topPomFile;
+        
+        if ( customPomPath != null )
+        {
+            topPomFile = new File( customPomPath ).getCanonicalFile();
+        }
+        else
+        {
+            topPomFile = new File( userDir, RELEASE_POMv4 );
+            
+            if ( !topPomFile.exists() )
+            {
+                topPomFile = new File( userDir, POMv4 );
+                
+                if ( !topPomFile.exists() )
+                {
+                    getLogger().warn( "Cannot find top-level project file in 
directory: " + userDir + ". Using first project in project-list." );
+                    
+                    return (MavenProject) projects.get( 0 );
+                }
+            }
+        }
+        
+        MavenProject topProject = null;
+        
+        for ( Iterator it = projects.iterator(); it.hasNext(); )
+        {
+            MavenProject project = (MavenProject) it.next();
+            
+            File projectFile = project.getFile().getCanonicalFile();
+            
+            if ( topPomFile.equals( projectFile ) )
+            {
+                topProject = project;
+                break;
+            }
+        }
+        
+        return topProject;
     }
 
     private List collectProjects( List files, ArtifactRepository 
localRepository, boolean recursive, Settings settings )

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=227259&r1=227258&r2=227259&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 Wed Aug  3 13:43:58 2005
@@ -289,7 +289,10 @@
                     getLogger().debug( "", e );
                 }
 
-                if ( mojo != null && mojo.isAggregator() )
+                // if the mojo descriptor was found, determine aggregator 
status according to:
+                // 1. whether the mojo declares itself an aggregator
+                // 2. whether the mojo DOES NOT require a project to function 
(implicitly avoid reactor)
+                if ( mojo != null && ( mojo.isAggregator() || 
!mojo.isProjectRequired() ) )
                 {
                     if ( currentSegment != null && !currentSegment.aggregate() 
)
                     {

Modified: 
maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java?rev=227259&r1=227258&r2=227259&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
 (original)
+++ 
maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
 Wed Aug  3 13:43:58 2005
@@ -236,7 +236,12 @@
 
         if ( requiresProject != null )
         {
-            mojoDescriptor.setProjectRequired( true );
+            String requiresProjectValue = requiresProject.getValue();
+            
+            if ( requiresProjectValue != null )
+            {
+                mojoDescriptor.setProjectRequired( Boolean.valueOf( 
requiresProjectValue ).booleanValue() );
+            }
         }
 
         // 
----------------------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to