You are viewing a plain text version of this content. The canonical link for it is here.
Posted to m2-dev@maven.apache.org by jd...@apache.org on 2004/09/16 16:26:18 UTC
cvs commit: maven-components/maven-core/src/main/resources/org/apache/maven/project pom-4.0.0.xml pom.xml
jdcasey 2004/09/16 07:26:18
Modified: maven-core/src/main/java/org/apache/maven/project
DefaultMavenProjectBuilder.java
maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar
JarMojo.java
Added: maven-core/src/main/resources/org/apache/maven/project
pom-4.0.0.xml
Removed: maven-core/src/main/resources/org/apache/maven/project
pom.xml
Log:
o Changed maven-core's super-pom from pom.xml to pom-4.0.0.xml
o Added validation logic for non-heritable pom elements to the default project builder
o Changed default builder to select the correct super-pom from the project pom's modelVersion.
Revision Changes Path
1.12 +34 -3 maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Index: DefaultMavenProjectBuilder.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- DefaultMavenProjectBuilder.java 15 Sep 2004 12:34:16 -0000 1.11
+++ DefaultMavenProjectBuilder.java 16 Sep 2004 14:26:18 -0000 1.12
@@ -101,9 +101,6 @@
try
{
- // TODO: rename to super-pom.xml so it is not used by the reactor
- superModel = modelReader.read( new InputStreamReader( DefaultMavenProjectBuilder.class.getResourceAsStream( "pom.xml" ) ) );
-
Model userModel = null;
// TODO: use maven home local instead of user.home/.m2
File userModelFile = new File( System.getProperty( "user.home" ) + "/.m2", "override.xml" );
@@ -119,6 +116,12 @@
{
localRepositoryValue = userModel.getLocal().getRepository();
}
+
+ validateLeafModel(userModel);
+
+ // TODO: rename to super-pom.xml so it is not used by the reactor
+ superModel = modelReader.read( new InputStreamReader( DefaultMavenProjectBuilder.class.getResourceAsStream( "pom-" + userModel.getModelVersion() + ".xml" ) ) );
+
superModel.getRepositories().addAll( userModel.getRepositories() );
}
@@ -216,6 +219,34 @@
{
throw new ProjectBuildingException( "Error building project from " + projectDescriptor, e );
}
+ }
+
+ private void validateLeafModel( Model userModel )
+ {
+ String modelVersion = userModel.getModelVersion();
+ if ( modelVersion == null || modelVersion.length() < 1 )
+ {
+ throw new IllegalStateException( "POM element \'modelVersion\' must be specified; it may not be inherited" );
+ }
+
+ String name = userModel.getName();
+ if ( name == null || name.length() < 1 )
+ {
+ throw new IllegalStateException( "POM element \'name\' must be specified; it may not be inherited" );
+ }
+
+ String artifactId = userModel.getArtifactId();
+ if ( artifactId == null || artifactId.length() < 1 )
+ {
+ throw new IllegalStateException( "POM element \'artifactId\' must be specified; it may not be inherited" );
+ }
+
+ String version = userModel.getVersion();
+ if ( version == null || version.length() < 1 )
+ {
+ throw new IllegalStateException( "POM element \'version\' must be specified; it may not be inherited" );
+ }
+
}
private MavenProject assembleLineage( File projectDescriptor,
1.12 +12 -1 maven-components/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/JarMojo.java
Index: JarMojo.java
===================================================================
RCS file: /home/cvs/maven-components/maven-plugins/maven-jar-plugin/src/main/java/org/apache/maven/plugin/jar/JarMojo.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- JarMojo.java 8 Sep 2004 04:05:40 -0000 1.11
+++ JarMojo.java 16 Sep 2004 14:26:18 -0000 1.12
@@ -18,6 +18,7 @@
import org.apache.maven.plugin.PluginExecutionRequest;
import org.apache.maven.plugin.PluginExecutionResponse;
+import org.apache.maven.project.MavenProject;
import java.io.File;
import java.util.LinkedHashMap;
@@ -52,6 +53,13 @@
* validator=""
* expression="#project.build.directory"
* description=""
+ * @parameter
+ * name="project"
+ * type="org.apache.maven.project.MavenProject"
+ * required="true"
+ * validator=""
+ * expression="#project"
+ * description="current MavenProject instance"
*
* @author <a href="michal@codehaus">Michal Maczka</a>
* @version $Id$
@@ -82,6 +90,9 @@
Map includes = new LinkedHashMap();
addDirectory(includes, "**/**", "**/package.html", "", new File( outputDirectory ) );
+
+ MavenProject project = (MavenProject)request.getParameter("project");
+ includes.put("META-INF/maven/pom.xml", project.getFile());
createJar( jarFile, includes );
}
1.1 maven-components/maven-core/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
Index: pom-4.0.0.xml
===================================================================
<project>
<modelVersion>4.0.0</modelVersion>
<name>Maven Super Model</name>
<repositories>
<repository>
<id>central</id>
<name>Maven Central Repository at ibiblio</name>
<url>http://www.ibiblio.org/maven</url>
</repository>
</repositories>
<!--
<pluginRepositories>
<repository>
<id>pluginCentral</id>
<name>Maven Central Repository at ibiblio</name>
<url>http://www.ibiblio.org/maven</url>
</repository>
</pluginRepositories>
-->
<!-- TODO: should be the maven local home -->
<!-- TODO: substitution not working -->
<!--
<local>
<repository>${user.home}/.m2/repository</repository>
</local>
-->
<!-- Default plugins
<plugins>
<plugin>
<id></id>
</plugin>
</plugins>
-->
<build>
<!-- This all may just fold into plugin parameters -->
<directory>target</directory>
<output>target/classes</output>
<testOutput>target/test-classes</testOutput>
<sourceDirectory>src/main/java</sourceDirectory>
<unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
<unitTest>
<includes>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/*Abstract*.java</exclude>
</excludes>
<resources>
<resource>
<directory>src/test/resources</directory>
</resource>
</resources>
</unitTest>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>