evenisse    2002/11/01 10:49:12

  Modified:    src/java/org/apache/maven MavenUtils.java
               src/java/org/apache/maven/app Maven.java
               src/test/java/org/apache/maven/project
                        ProjectInheritanceTest.java
               xdocs    changes.xml
  Log:
  Add support for extend properties where a project extend to an another project
  
  Revision  Changes    Path
  1.51      +12 -3     jakarta-turbine-maven/src/java/org/apache/maven/MavenUtils.java
  
  Index: MavenUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/MavenUtils.java,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- MavenUtils.java   1 Nov 2002 13:27:56 -0000       1.50
  +++ MavenUtils.java   1 Nov 2002 18:49:12 -0000       1.51
  @@ -198,8 +198,17 @@
           String pomToExtend = project.getExtend();
           if (pomToExtend != null)
           {
  -            Project parent = (Project) projectBeanReader.parse(
  -                new File(pomToExtend));
  +            Project parent;
  +            try
  +            {
  +                parent = (Project) projectBeanReader.parse(
  +                  new File(pomToExtend));
  +            }
  +            catch (Exception e)
  +            {
  +                parent = (Project) projectBeanReader.parse(
  +                  new File(dir, pomToExtend));
  +            }
               
               project = (Project) mergeBeans(project, parent);
           }
  
  
  
  1.119     +54 -6     jakarta-turbine-maven/src/java/org/apache/maven/app/Maven.java
  
  Index: Maven.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/app/Maven.java,v
  retrieving revision 1.118
  retrieving revision 1.119
  diff -u -r1.118 -r1.119
  --- Maven.java        26 Oct 2002 08:11:02 -0000      1.118
  +++ Maven.java        1 Nov 2002 18:49:12 -0000       1.119
  @@ -572,6 +572,12 @@
        *  
        *  <ol>
        *    <li>$MAVEN_HOME/bin/driver.properties</li>
  +     *    <li>$PARENT_PROJECTS/project.properties if project has
  +     *        an extend property
  +     *    </li>
  +     *    <li>$PARENT_PROJECTS/build.properties if project has
  +     *        an extend property
  +     *    </li>
        *    <li>$PROJECT/project.properties</li>
        *    <li>$PROJECT/build.properties</li>
        *    <li>$HOME/build.properties</li>
  @@ -589,11 +595,7 @@
           props = new File(mavenBin, "driver.properties");
           loadProperties(props);
   
  -        props = new File( getDir(), "project.properties" );
  -        loadProperties(props);
  -        
  -        props = new File( getDir(), "build.properties" );
  -        loadProperties(props);
  +        loadProjectProperties(getDir(), project);
           
           props = new File( System.getProperty("user.home"), "build.properties" );
           loadProperties(props);
  @@ -606,6 +608,52 @@
               String property = (String) i.next();
               setProperty(property, System.getProperty(property));
           }
  +    }
  +    
  +    /** 
  +     *  Load the project properties chain.
  +     *
  +     *  <p>
  +     *  This loads properties files with the following priority:
  +     *  </p>
  +     *  
  +     *  <ol>
  +     *    <li>$PARENT_PROJECTS/project.properties if project has
  +     *        an extend property
  +     *    </li>
  +     *    <li>$PARENT_PROJECTS/build.properties if project has
  +     *        an extend property
  +     *    </li>
  +     *    <li>$PROJECT/project.properties</li>
  +     *    <li>$PROJECT/build.properties</li>
  +     *  </ol>
  +     *  
  +     *  @param projectDir directory of project
  +     */
  +    private void loadProjectProperties(File projectDir, Project currentProject)
  +    {
  +        File props = null;
  +        
  +        String parentProjectStr = currentProject.getExtend();
  +        if (parentProjectStr != null && !parentProjectStr.equals(""))
  +        {
  +            File parentProjectFile = new File(projectDir, parentProjectStr);
  +            File parentProjectDir = parentProjectFile.getParentFile();
  +            try
  +            {
  +                Project parentProject = MavenUtils.getProject(parentProjectFile);
  +                loadProjectProperties(parentProjectDir, parentProject);
  +            }
  +            catch (Exception e)
  +            {
  +            }
  +        }
  +        
  +        props = new File(projectDir, "project.properties");
  +        loadProperties(props);
  +        
  +        props = new File(projectDir, "build.properties");
  +        loadProperties(props);
       }
   
       /** Produce a string representation, suitable for debugging.
  
  
  
  1.16      +19 -0     
jakarta-turbine-maven/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java
  
  Index: ProjectInheritanceTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-maven/src/test/java/org/apache/maven/project/ProjectInheritanceTest.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ProjectInheritanceTest.java       26 Oct 2002 08:19:19 -0000      1.15
  +++ ProjectInheritanceTest.java       1 Nov 2002 18:49:12 -0000       1.16
  @@ -64,6 +64,7 @@
   import org.apache.commons.lang.StringUtils;
   
   import org.apache.maven.MavenUtils;
  +import org.apache.maven.app.Maven;
   import org.apache.maven.project.Build;
   import org.apache.maven.project.SourceModification;
   import org.apache.maven.TestConstantsTest;
  @@ -72,6 +73,7 @@
       extends TestCase
   {
       private String TEST_DOCUMENT = null;
  +    private String TEST_DOCUMENT2 = null;
   
       public ProjectInheritanceTest(String testName)
       {
  @@ -91,6 +93,7 @@
           String fs = System.getProperty("file.separator");
           assertNotNull("The system property file.separator was not defined.", fs);
           TEST_DOCUMENT = baseDir+"/src/test/extend/project-child.xml";
  +        TEST_DOCUMENT2 = 
baseDir+"/src/test/extend/child_project/project-child2.xml";
       }
   
       public void testProjectMapping() throws Exception
  @@ -184,5 +187,21 @@
           assertEquals("b4", v4.getId());
           assertEquals("1.0-b4", v4.getName());
           assertEquals("MAVEN_1_0_B4", v4.getTag());
  +    }
  +    
  +    public void testProjectExtendProperties() throws Exception
  +    {
  +        Project p = MavenUtils.getProject(new File(TEST_DOCUMENT2),
  +                                          new 
File(System.getProperty("basedir")+"/src/test/extend/child_project"));
  +        Maven maven = new Maven(new File(System.getProperty("maven.home")));
  +        maven.setProject(p);
  +        maven.setDir(p.getFile().getParentFile());
  +        maven.runtimeInitialization();
  +        
  +        //assertEquals("maven", maven.getProperty("maven.final.name"));
  +        assertEquals("conf/java", maven.getProperty("maven.jarResources.basedir"));
  +        assertEquals("right", maven.getProperty("maven.xdoc.date"));
  +        assertEquals("myValue", maven.getProperty("myProperty"));
  +        assertEquals("myValue2", maven.getProperty("myProperty2"));
       }
   }
  
  
  
  1.6       +4 -0      jakarta-turbine-maven/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-maven/xdocs/changes.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- changes.xml       4 Oct 2002 06:04:30 -0000       1.5
  +++ changes.xml       1 Nov 2002 18:49:12 -0000       1.6
  @@ -7,6 +7,10 @@
   
     <body>
       <release version="1.0-beta-8" date="in CVS">
  +      <action dev="evenisse" type="add">
  +        Added support for inherits properties where a project extend to an
  +        another project.
  +      </action>
         <action dev="dion" type="add" due-to="Jim Birchfield">
           Added <a 
href="http://jakarta.apache.org/turbine/maven/reference/plugins/console/";>Console 
plugin</a>
         </action>
  
  
  

--
To unsubscribe, e-mail:   <mailto:turbine-maven-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:turbine-maven-dev-help@;jakarta.apache.org>

Reply via email to