Index: pom.xml
===================================================================
--- pom.xml	(revision 759140)
+++ pom.xml	(working copy)
@@ -90,7 +90,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-model</artifactId>
-      <version>${mavenVersion}</version>
+      <version>2.0.11-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
Index: src/main/resources/project-info-report.properties
===================================================================
--- src/main/resources/project-info-report.properties	(revision 759140)
+++ src/main/resources/project-info-report.properties	(working copy)
@@ -36,6 +36,17 @@
 report.cim.overview.title                                          = Overview
 report.cim.title                                                   = Continuous Integration
 report.cim.url                                                     = The following is a link to the continuous integration system used by the project.
+report.qualitymanagement.sonar.intro                               = This project uses {Sonar, http://sonar.codehaus.org/}.
+report.qualitymanagement.custom.intro                              = This project uses %qualityManagementSystem% to manage its quality.
+report.qualitymanagement.description                               = This is a link to the quality management system for this project. Quality can be watched using this link.
+report.qualitymanagement.general.intro                             = This project uses a Quality Management System to manage its quality.
+report.qualitymanagement.intro                                     = Quality can be watched with the following quality management system for this project.
+report.qualitymanagement.name                                      = Quality Management
+report.qualitymanagement.noqualityManagement                       = No quality management system is defined. Please check back at a later date.
+report.qualitymanagement.nourl                                     = No url to the quality management system is defined.
+report.qualitymanagement.overview.title                            = Overview
+report.qualitymanagement.title                                     = Quality Management
+report.qualitymanagement.url                                       = The following is a link to the quality management system used by the project.
 report.dependencies.column.artifactId                              = ArtifactId
 report.dependencies.column.classifier                              = Classifier
 report.dependencies.column.description                             = Description
Index: src/main/java/org/apache/maven/report/projectinfo/QualityManagementReport.java
===================================================================
--- src/main/java/org/apache/maven/report/projectinfo/QualityManagementReport.java	(revision 0)
+++ src/main/java/org/apache/maven/report/projectinfo/QualityManagementReport.java	(revision 0)
@@ -0,0 +1,175 @@
+package org.apache.maven.report.projectinfo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.doxia.sink.Sink;
+import org.apache.maven.model.QualityManagement;
+import org.apache.maven.model.Model;
+import org.apache.maven.reporting.AbstractMavenReportRenderer;
+import org.codehaus.plexus.i18n.I18N;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.util.Locale;
+
+/**
+ * Generates the Project Quality Management report.
+ *
+ * @author <a href="mailto:xavier.chatelain@free.fr">Xavier Chatelain </a>
+ * @version $Id: $
+ * @since 2.2
+ * @goal quality-management
+ */
+public class QualityManagementReport
+    extends AbstractProjectInfoReport
+{
+    // ----------------------------------------------------------------------
+    // Public methods
+    // ----------------------------------------------------------------------
+
+    /** {@inheritDoc} */
+    public String getName( Locale locale )
+    {
+        return i18n.getString( "project-info-report", locale, "report.qualitymanagement.name" );
+    }
+
+    /** {@inheritDoc} */
+    public String getDescription( Locale locale )
+    {
+        return i18n.getString( "project-info-report", locale, "report.qualitymanagement.description" );
+    }
+
+    /** {@inheritDoc} */
+    public void executeReport( Locale locale )
+    {
+        QualityManagementRenderer r = new QualityManagementRenderer( getSink(), getProject().getModel(), i18n, locale );
+
+        r.render();
+    }
+
+    /** {@inheritDoc} */
+    public String getOutputName()
+    {
+        return "quality-management";
+    }
+
+    // ----------------------------------------------------------------------
+    // Private
+    // ----------------------------------------------------------------------
+
+    /**
+     * Internal renderer class
+     */
+    private static class QualityManagementRenderer
+        extends AbstractMavenReportRenderer
+    {
+        private Model model;
+
+        private I18N i18n;
+
+        private Locale locale;
+
+        QualityManagementRenderer( Sink sink, Model model, I18N i18n, Locale locale )
+        {
+            super( sink );
+
+            this.model = model;
+
+            this.i18n = i18n;
+
+            this.locale = locale;
+        }
+
+        /** {@inheritDoc} */
+        public String getTitle()
+        {
+            return i18n.getString( "project-info-report", locale, "report.qualitymanagement.title" );
+        }
+
+        /** {@inheritDoc} */
+        public void renderBody()
+        {
+            QualityManagement qualityManagement = model.getQualityManagement();
+            if ( qualityManagement == null )
+            {
+                startSection( getTitle() );
+
+                paragraph( i18n.getString( "project-info-report", locale, "report.qualitymanagement.noqualityManagement" ) );
+
+                endSection();
+
+                return;
+            }
+
+            String system = qualityManagement.getSystem();
+            String url = qualityManagement.getUrl();
+
+            // Overview
+            startSection( i18n.getString( "project-info-report", locale, "report.qualitymanagement.overview.title" ) );
+
+            if ( isQualityManagementSystem( system, "sonar" ) )
+            {
+                linkPatternedText( i18n.getString( "project-info-report", locale, "report.qualitymanagement.sonar.intro" ) );
+            }
+            else if ( system == null || "".equals( system.trim() ) )
+            {
+                paragraph( i18n.getString( "project-info-report", locale, "report.qualitymanagement.general.intro" ) );
+            }
+            else
+            {
+                paragraph(
+                    i18n.getString( "project-info-report", locale, "report.qualitymanagement.custom.intro" ).replaceFirst(
+                        "%qualityManagementSystem%", system ) );
+            }
+
+            endSection();
+
+            // Connection
+            startSection( getTitle() );
+
+            paragraph( i18n.getString( "project-info-report", locale, "report.qualitymanagement.intro" ) );
+
+            verbatimLink( url, url );
+
+            endSection();
+        }
+
+        /**
+         * Checks if a quality management system is Sonar, etc.
+         *
+         * @param system
+         * @param qm
+         * @return true if the quality management system is Sonar, false otherwise.
+         */
+        private boolean isQualityManagementSystem( String system, String qm )
+        {
+            if ( StringUtils.isEmpty( system ) )
+            {
+                return false;
+            }
+
+            if ( StringUtils.isEmpty( qm ) )
+            {
+                return false;
+            }
+
+            return system.toLowerCase( Locale.ENGLISH ).startsWith( qm.toLowerCase( Locale.ENGLISH ) );
+        }
+    }
+}
Index: src/it/minimal-pom/verify.bsh
===================================================================
--- src/it/minimal-pom/verify.bsh	(revision 759140)
+++ src/it/minimal-pom/verify.bsh	(working copy)
@@ -15,6 +15,7 @@
                          "index", 
                          "integration", 
                          "issue-tracking", 
+                         "quality-management",
                          "license", 
                          "mail-lists", 
                          "plugin-management",
Index: src/test/resources/plugin-configs/quality-management-plugin-config.xml
===================================================================
--- src/test/resources/plugin-configs/quality-management-plugin-config.xml	(revision 0)
+++ src/test/resources/plugin-configs/quality-management-plugin-config.xml	(revision 0)
@@ -0,0 +1,51 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you 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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.plugin.projectinfo.tests</groupId>
+  <artifactId>quality-management</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <name>quality-management project info</name>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <qualityManagement>
+    <system>sonar</system>
+    <url>http://localhost/sonar</url>
+  </qualityManagement>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <configuration>
+          <outputDirectory>target/test-harness/issue-tracking</outputDirectory>
+          <localRepository>${localRepository}</localRepository>
+          <project implementation="org.apache.maven.report.projectinfo.stubs.QualityManagementStub"/>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>\ No newline at end of file
Index: src/test/java/org/apache/maven/report/projectinfo/QualityManagementReportTest.java
===================================================================
--- src/test/java/org/apache/maven/report/projectinfo/QualityManagementReportTest.java	(revision 0)
+++ src/test/java/org/apache/maven/report/projectinfo/QualityManagementReportTest.java	(revision 0)
@@ -0,0 +1,83 @@
+package org.apache.maven.report.projectinfo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 java.net.URL;
+
+import com.meterware.httpunit.GetMethodWebRequest;
+import com.meterware.httpunit.TextBlock;
+import com.meterware.httpunit.WebConversation;
+import com.meterware.httpunit.WebLink;
+import com.meterware.httpunit.WebRequest;
+import com.meterware.httpunit.WebResponse;
+
+/**
+ * @author Xavier Chatelain
+ * @author <a href="mailto:xavier.chatelain@free.fr">Xavier Chatelain</a>
+ * @version $Id: $
+ */
+public class QualityManagementReportTest
+    extends AbstractProjectInfoTestCase
+{
+    /**
+     * WebConversation object
+     */
+    private static final WebConversation WEB_CONVERSATION = new WebConversation();
+
+    /**
+     * Test report
+     *
+     * @throws Exception if any
+     */
+    public void testReport()
+        throws Exception
+    {
+        generateReport( "quality-management", "quality-management-plugin-config.xml" );
+        assertTrue( "Test html generated", getGeneratedReport( "quality-management.html" ).exists() );
+
+        URL reportURL = getGeneratedReport( "quality-management.html" ).toURL();
+        assertNotNull( reportURL );
+
+        // HTTPUnit
+        WebRequest request = new GetMethodWebRequest( reportURL.toString() );
+        WebResponse response = WEB_CONVERSATION.getResponse( request );
+
+        // Basic HTML tests
+        assertTrue( response.isHTML() );
+        assertTrue( response.getContentLength() > 0 );
+
+        // Test the Page title
+        assertEquals( getString( "report.qualitymanagement.name" ) + " - " + getString( "report.qualitymanagement.title" ),
+                      response.getTitle() );
+
+        // Test the links
+        WebLink[] weblinks = response.getLinks();
+        assertEquals( weblinks.length, 3 );
+
+        assertEquals( weblinks[1].getText(), "Sonar" );
+
+        assertEquals( weblinks[2].getText(), "http://localhost/sonar" );
+
+        // Test the texts
+        TextBlock[] textBlocks = response.getTextBlocks();
+        assertEquals( textBlocks[0].getText(), getString( "report.qualitymanagement.overview.title" ) );
+        assertEquals( textBlocks[1].getText(), getString( "report.qualitymanagement.name" ) );
+    }
+}

