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>