New dashboard plugin. See web site docs for more details.
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@114262 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fc7c7c95f0
commit
dc5d656391
5
dashboard/.cvsignore
Normal file
5
dashboard/.cvsignore
Normal file
@ -0,0 +1,5 @@
|
||||
target
|
||||
velocity.log
|
||||
maven.log
|
||||
.classpath
|
||||
.project
|
||||
184
dashboard/plugin.jelly
Normal file
184
dashboard/plugin.jelly
Normal file
@ -0,0 +1,184 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<project
|
||||
xmlns:j="jelly:core"
|
||||
xmlns:m="jelly:maven"
|
||||
xmlns:x="jelly:xml"
|
||||
xmlns:d="doc"
|
||||
xmlns:u="jelly:util"
|
||||
xmlns:a="jelly:ant">
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Generate a dashboard report.
|
||||
========================================================================
|
||||
-->
|
||||
<goal name="dashboard" prereqs="dashboard:report"
|
||||
description="Generate a dashboard report"/>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Generate a dashboard report.
|
||||
========================================================================
|
||||
-->
|
||||
<goal name="dashboard:report" description="Generate a dashboard report">
|
||||
|
||||
<!-- Generate dashboard data for all sub-projects if it is required -->
|
||||
<j:set var="runreactor" value="${maven.dashboard.runreactor}"/>
|
||||
<j:choose>
|
||||
<j:when test="${runreactor == 'true'}">
|
||||
<m:reactor
|
||||
basedir="${maven.dashboard.basedir}"
|
||||
banner="Generating dashboard data for"
|
||||
includes="${maven.dashboard.includes}"
|
||||
excludes="${maven.dashboard.excludes}"
|
||||
postProcessing="true"
|
||||
goals="dashboard:report-single"
|
||||
ignoreFailures="${maven.dashboard.ignoreFailures}"/>
|
||||
</j:when>
|
||||
<j:otherwise>
|
||||
<!-- We need to run the reactor to gather the list of projects
|
||||
because the reactor creates a reactorProjects jelly property
|
||||
that we need in the dashboard:aggregate goal. -->
|
||||
<m:reactor
|
||||
basedir="${maven.dashboard.basedir}"
|
||||
banner="Gathering project list for"
|
||||
includes="${maven.dashboard.includes}"
|
||||
excludes="${maven.dashboard.excludes}"
|
||||
postProcessing="true"
|
||||
ignoreFailures="${maven.dashboard.ignoreFailures}"/>
|
||||
</j:otherwise>
|
||||
</j:choose>
|
||||
|
||||
<!-- Aggregate all dashboard project data into a single master dashboard
|
||||
file -->
|
||||
<attainGoal name="dashboard:aggregate"/>
|
||||
|
||||
<!-- Generate xdoc report -->
|
||||
<attainGoal name="dashboard:xdoc"/>
|
||||
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Aggregate different dashboard single reports into one
|
||||
========================================================================
|
||||
-->
|
||||
<goal name="dashboard:aggregate">
|
||||
|
||||
<a:dirname property="xmlReportDir" file="${maven.dashboard.report.xml}"/>
|
||||
<a:mkdir dir="${xmlReportDir}"/>
|
||||
|
||||
<j:file name="${maven.dashboard.report.xml}" prettyPrint="true"
|
||||
xmlns="dashboard">
|
||||
<dashboard>
|
||||
<j:forEach var="reactorProject" items="${reactorProjects}">
|
||||
<x:element name="project">
|
||||
<x:attribute name="name">${reactorProject.name}</x:attribute>
|
||||
|
||||
<!-- Extract all reports from the single dashboards -->
|
||||
|
||||
<!-- TODO: Find a way to not hardcode the dashboard data
|
||||
location -->
|
||||
<u:file var="dashboardAsFile"
|
||||
name="${reactorProject.context.getVariable('maven.build.dir')}/dashboard-single.xml"/>
|
||||
<x:parse var="doc" xml="${dashboardAsFile}"/>
|
||||
<x:copyOf select="$doc//report"/>
|
||||
|
||||
</x:element>
|
||||
</j:forEach>
|
||||
</dashboard>
|
||||
</j:file>
|
||||
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Generate xdoc report file
|
||||
========================================================================
|
||||
-->
|
||||
<goal name="dashboard:xdoc">
|
||||
|
||||
<a:dirname property="xdocReportDir"
|
||||
file="${maven.dashboard.report.xdoc}.xml"/>
|
||||
<a:mkdir dir="${xdocReportDir}"/>
|
||||
|
||||
<d:jsl
|
||||
input="${maven.dashboard.report.xml}"
|
||||
output="${maven.dashboard.report.xdoc}.xml"
|
||||
stylesheet="${maven.dashboard.template}"
|
||||
outputMode="xml"
|
||||
prettyPrint="true"/>
|
||||
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Generate a dashboard report.
|
||||
========================================================================
|
||||
-->
|
||||
<goal name="dashboard:report-single">
|
||||
|
||||
<a:dirname property="singleReportDir" file="${maven.dashboard.report.single}"/>
|
||||
<a:mkdir dir="${singleReportDir}"/>
|
||||
|
||||
<u:tokenize var="reportNames" delim=",">${maven.dashboard.reports}</u:tokenize>
|
||||
|
||||
<!-- For each report, call the goal associated with the report type so that
|
||||
raw data for that report type are generated. For example the checkstyle
|
||||
report type will call checkstyle:checkstyle -->
|
||||
<j:set var="rungoals" value="${maven.dashboard.rungoals}"/>
|
||||
<j:if test="${rungoals == 'true'}">
|
||||
<j:forEach var="reportName" items="${reportNames}">
|
||||
<j:set var="goalProperty"
|
||||
value="maven.dashboard.report.${reportName}.goal"/>
|
||||
<attainGoal name="${context.getVariable(goalProperty)}"/>
|
||||
</j:forEach>
|
||||
</j:if>
|
||||
|
||||
<j:file name="${maven.dashboard.report.single}" prettyPrint="true"
|
||||
xmlns="dashboard">
|
||||
<dashboard-single>
|
||||
<j:forEach var="reportName" items="${reportNames}">
|
||||
<x:element name="report">
|
||||
|
||||
<!-- Add report name -->
|
||||
<x:attribute name="name">${reportName}</x:attribute>
|
||||
|
||||
<!-- Add report content -->
|
||||
<j:set var="scriptProperty"
|
||||
value="maven.dashboard.report.${reportName}.script"/>
|
||||
<j:import file="${context.getVariable(scriptProperty)}"
|
||||
inherit="true"/>
|
||||
|
||||
</x:element>
|
||||
</j:forEach>
|
||||
</dashboard-single>
|
||||
</j:file>
|
||||
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Register the dashboard report.
|
||||
========================================================================
|
||||
-->
|
||||
<goal name="maven-dashboard-plugin:register">
|
||||
|
||||
<d:registerReport
|
||||
name="Dashboard"
|
||||
pluginName="dashboard"
|
||||
description="Dashboard report aggregating different quality reports"
|
||||
link="${maven.dashboard.report.xdoc}"/>
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Deregister the dashboard report.
|
||||
========================================================================
|
||||
-->
|
||||
<goal name="maven-dashboard-plugin:deregister">
|
||||
<d:deregisterReport name="Dashboard"/>
|
||||
</goal>
|
||||
|
||||
</project>
|
||||
54
dashboard/plugin.properties
Normal file
54
dashboard/plugin.properties
Normal file
@ -0,0 +1,54 @@
|
||||
# -------------------------------------------------------------------
|
||||
# D E F A U L T M A V E N P R O P E R T I E S
|
||||
# -------------------------------------------------------------------
|
||||
# These are the properties that we believe are immutable so we
|
||||
# keep them apart from the project specific properties.
|
||||
# -------------------------------------------------------------------
|
||||
|
||||
# Properties for the dashboard reactor
|
||||
# ------------------------------------
|
||||
|
||||
maven.dashboard.basedir=${basedir}
|
||||
maven.dashboard.includes=*/project.xml
|
||||
maven.dashboard.excludes=**/target/**/project.xml,project.xml
|
||||
maven.dashboard.ignoreFailures=false
|
||||
|
||||
# Generated dashboard xml data file
|
||||
maven.dashboard.report.xml = ${maven.build.dir}/dashboard-data.xml
|
||||
|
||||
# Generated dashboard xdoc file name (without the extension).
|
||||
# Note: The value must not include any path as the xdoc will be
|
||||
# generated in ${maven.gen.docs}.
|
||||
maven.dashboard.report.xdoc = dashboard-report
|
||||
|
||||
# Location of JSL template to generate the xdoc file
|
||||
maven.dashboard.template = ${plugin.resources}/templates/dashboard.jsl
|
||||
|
||||
# Decide whether a call to dashboard:report will call the reactor
|
||||
# on the child projects to generate individual dashboard data. If you
|
||||
# already using the multiproject project or the reactor, a better option
|
||||
# is to add dashboard:report-single to the list of goals you're running.
|
||||
# In which case, you'll need to set the following property to false
|
||||
# (otherwise the reactor will be run again on your child projects).
|
||||
maven.dashboard.runreactor = true
|
||||
|
||||
# Properties for gathering dashboard data for a single project
|
||||
# ------------------------------------------------------------
|
||||
|
||||
# Location of default dashboard adaptors
|
||||
maven.dashboard.reports.dir = ${plugin.resources}/reports
|
||||
|
||||
# List of reports to aggregate
|
||||
maven.dashboard.reports = checkstyle
|
||||
|
||||
# Properties for the default checkstyle adaptor
|
||||
maven.dashboard.report.checkstyle.script = ${maven.dashboard.reports.dir}/checkstyle.jelly
|
||||
maven.dashboard.report.checkstyle.artifact = ${maven.build.dir}/checkstyle-raw-report.xml
|
||||
maven.dashboard.report.checkstyle.label = Checkstyle errors
|
||||
maven.dashboard.report.checkstyle.goal = checkstyle
|
||||
|
||||
# Generated dashboard data for a single project
|
||||
maven.dashboard.report.single = ${maven.build.dir}/dashboard-single.xml
|
||||
|
||||
# Decide whether to call goals associated with report types or not
|
||||
maven.dashboard.rungoals = true
|
||||
7
dashboard/project.properties
Normal file
7
dashboard/project.properties
Normal file
@ -0,0 +1,7 @@
|
||||
# -------------------------------------------------------------------
|
||||
# P R O J E C T P R O P E R T I E S
|
||||
# -------------------------------------------------------------------
|
||||
maven.xdoc.date=left
|
||||
maven.xdoc.version=${pom.currentVersion}
|
||||
maven.license.licenseFile=${basedir}/../LICENSE.txt
|
||||
|
||||
40
dashboard/project.xml
Normal file
40
dashboard/project.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<project>
|
||||
<extend>../project.xml</extend>
|
||||
<pomVersion>3</pomVersion>
|
||||
<id>maven-dashboard-plugin</id>
|
||||
<name>Maven Dashboard Plugin</name>
|
||||
<currentVersion>1.0-SNAPSHOT</currentVersion>
|
||||
<description>Generate a dashboard containing global statistics about other maven reports</description>
|
||||
<shortDescription>Generate a statistic dashboard</shortDescription>
|
||||
<url>http://maven.apache.org/reference/plugins/dashboard/</url>
|
||||
<siteDirectory>/www/maven.apache.org/reference/plugins/dashboard/</siteDirectory>
|
||||
<repository>
|
||||
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven/src/plugins-build/dashboard/</connection>
|
||||
<url>http://cvs.apache.org/viewcvs/maven/src/plugins-build/dashboard/</url>
|
||||
</repository>
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Vincent Massol</name>
|
||||
<id>vmassol</id>
|
||||
<email>vmassol@pivolis.com</email>
|
||||
<organization>Pivolis</organization>
|
||||
<roles>
|
||||
<role>Creator</role>
|
||||
<role>Java Developer</role>
|
||||
<role>Release Manager</role>
|
||||
</roles>
|
||||
</developer>
|
||||
</developers>
|
||||
<dependencies/>
|
||||
<reports>
|
||||
<report>maven-changes-plugin</report>
|
||||
<report>maven-changelog-plugin</report>
|
||||
<report>maven-file-activity-plugin</report>
|
||||
<report>maven-developer-activity-plugin</report>
|
||||
<report>maven-file-activity-plugin</report>
|
||||
<report>maven-license-plugin</report>
|
||||
<report>maven-linkcheck-plugin</report>
|
||||
</reports>
|
||||
</project>
|
||||
5
dashboard/sample/.cvsignore
Normal file
5
dashboard/sample/.cvsignore
Normal file
@ -0,0 +1,5 @@
|
||||
target
|
||||
cactus_client.log
|
||||
maven.log
|
||||
build.properties
|
||||
velocity.log
|
||||
6
dashboard/sample/project.properties
Normal file
6
dashboard/sample/project.properties
Normal file
@ -0,0 +1,6 @@
|
||||
# -------------------------------------------------------------------
|
||||
# P R O J E C T P R O P E R T I E S
|
||||
# -------------------------------------------------------------------
|
||||
maven.xdoc.date=left
|
||||
maven.xdoc.version=${pom.currentVersion}
|
||||
maven.checkstyle.header.file = ${basedir}/../../LICENSE.txt
|
||||
65
dashboard/sample/project.xml
Normal file
65
dashboard/sample/project.xml
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<project>
|
||||
|
||||
<!-- the version of maven's project object model -->
|
||||
<pomVersion>3</pomVersion>
|
||||
|
||||
<!-- a unique name for this project -->
|
||||
<id>maven-dashboard-sample</id>
|
||||
|
||||
<!-- a short but descriptive name for the project -->
|
||||
<name>Dashboard Sample</name>
|
||||
|
||||
<!-- The version of the project under development, e.g.
|
||||
1.1, 1.2, 2.0-dev -->
|
||||
<currentVersion>1.0</currentVersion>
|
||||
|
||||
<!-- details about the organization that 'owns' the project -->
|
||||
<organization>
|
||||
<name>Apache Software Foundation</name>
|
||||
<url>http://jakarta.apache.org/</url>
|
||||
</organization>
|
||||
|
||||
<!-- the year the project started -->
|
||||
<inceptionYear>2003</inceptionYear>
|
||||
|
||||
<!-- the top level of java packages that this project defines
|
||||
e.g. if your project contains the packages
|
||||
com.mycompany.accounts.reports, com.mycompany.accounts.reports
|
||||
and com.mycompany.accounts.utils, the package would be
|
||||
'com.mycompany.accounts' -->
|
||||
<package>org.apache.maven.dashboard.sample</package>
|
||||
|
||||
<!-- a short description of what the project does -->
|
||||
<shortDescription>A sample project using the Dashboard report</shortDescription>
|
||||
|
||||
<!-- the project home page -->
|
||||
<url>http://maven.apache.org/</url>
|
||||
|
||||
<!-- the version control repository and http url for online access
|
||||
the connection element has the form:
|
||||
scm:<system>:<system specific connection string> -->
|
||||
<repository>
|
||||
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven</connection>
|
||||
<url>http://cvs.apache.org/viewcvs/maven/</url>
|
||||
</repository>
|
||||
|
||||
<!-- any mailing lists for the project -->
|
||||
<mailingLists/>
|
||||
|
||||
<!-- who the developers are for the project -->
|
||||
<developers/>
|
||||
|
||||
<!-- jar files the project is dependent on -->
|
||||
<dependencies/>
|
||||
|
||||
<!-- build information for the project -->
|
||||
<build>
|
||||
<sourceDirectory>src/java</sourceDirectory>
|
||||
</build>
|
||||
|
||||
<reports>
|
||||
<report>maven-dashboard-plugin</report>
|
||||
</reports>
|
||||
|
||||
</project>
|
||||
6
dashboard/sample/subproject1/project.properties
Normal file
6
dashboard/sample/subproject1/project.properties
Normal file
@ -0,0 +1,6 @@
|
||||
# -------------------------------------------------------------------
|
||||
# P R O J E C T P R O P E R T I E S
|
||||
# -------------------------------------------------------------------
|
||||
maven.xdoc.date=left
|
||||
maven.xdoc.version=${pom.currentVersion}
|
||||
maven.checkstyle.header.file = ${basedir}/../../../LICENSE.txt
|
||||
65
dashboard/sample/subproject1/project.xml
Normal file
65
dashboard/sample/subproject1/project.xml
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<project>
|
||||
|
||||
<!-- the version of maven's project object model -->
|
||||
<pomVersion>3</pomVersion>
|
||||
|
||||
<!-- a unique name for this project -->
|
||||
<id>maven-dashboard-sample-subproject1</id>
|
||||
|
||||
<!-- a short but descriptive name for the project -->
|
||||
<name>Dashboard Sample Subproject1</name>
|
||||
|
||||
<!-- The version of the project under development, e.g.
|
||||
1.1, 1.2, 2.0-dev -->
|
||||
<currentVersion>1.0</currentVersion>
|
||||
|
||||
<!-- details about the organization that 'owns' the project -->
|
||||
<organization>
|
||||
<name>Apache Software Foundation</name>
|
||||
<url>http://jakarta.apache.org/</url>
|
||||
</organization>
|
||||
|
||||
<!-- the year the project started -->
|
||||
<inceptionYear>2003</inceptionYear>
|
||||
|
||||
<!-- the top level of java packages that this project defines
|
||||
e.g. if your project contains the packages
|
||||
com.mycompany.accounts.reports, com.mycompany.accounts.reports
|
||||
and com.mycompany.accounts.utils, the package would be
|
||||
'com.mycompany.accounts' -->
|
||||
<package>org.apache.maven.dashboard.sample.subproject1</package>
|
||||
|
||||
<!-- a short description of what the project does -->
|
||||
<shortDescription>A sample project using the Dashboard report</shortDescription>
|
||||
|
||||
<!-- the project home page -->
|
||||
<url>http://maven.apache.org/</url>
|
||||
|
||||
<!-- the version control repository and http url for online access
|
||||
the connection element has the form:
|
||||
scm:<system>:<system specific connection string> -->
|
||||
<repository>
|
||||
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven</connection>
|
||||
<url>http://cvs.apache.org/viewcvs/maven/</url>
|
||||
</repository>
|
||||
|
||||
<!-- any mailing lists for the project -->
|
||||
<mailingLists/>
|
||||
|
||||
<!-- who the developers are for the project -->
|
||||
<developers/>
|
||||
|
||||
<!-- jar files the project is dependent on -->
|
||||
<dependencies/>
|
||||
|
||||
<!-- build information for the project -->
|
||||
<build>
|
||||
<sourceDirectory>src/java</sourceDirectory>
|
||||
</build>
|
||||
|
||||
<reports>
|
||||
<report>maven-checkstyle-plugin</report>
|
||||
</reports>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,72 @@
|
||||
package org.apache.maven.dashboard.sample.subproject1;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2001 The Apache Software Foundation. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. The end-user documentation included with the redistribution,
|
||||
* if any, must include the following acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" must not be used to endorse or promote products
|
||||
* derived from this software without prior written permission. For
|
||||
* written permission, please contact apache@apache.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "Apache",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Apache Software Foundation. For more
|
||||
* information on the Apache Software Foundation, please see
|
||||
* <http://www.apache.org/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* Example voluntarily generating checsktyle errors.
|
||||
*
|
||||
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
|
||||
*
|
||||
* @version $Id: Sample.java,v 1.1 2003/11/04 21:11:31 vmassol Exp $
|
||||
*/
|
||||
public class Sample
|
||||
{
|
||||
public void someMethod()
|
||||
{
|
||||
new Boolean(true);
|
||||
}
|
||||
}
|
||||
6
dashboard/sample/subproject2/project.properties
Normal file
6
dashboard/sample/subproject2/project.properties
Normal file
@ -0,0 +1,6 @@
|
||||
# -------------------------------------------------------------------
|
||||
# P R O J E C T P R O P E R T I E S
|
||||
# -------------------------------------------------------------------
|
||||
maven.xdoc.date=left
|
||||
maven.xdoc.version=${pom.currentVersion}
|
||||
maven.checkstyle.header.file = ${basedir}/../../../LICENSE.txt
|
||||
65
dashboard/sample/subproject2/project.xml
Normal file
65
dashboard/sample/subproject2/project.xml
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<project>
|
||||
|
||||
<!-- the version of maven's project object model -->
|
||||
<pomVersion>3</pomVersion>
|
||||
|
||||
<!-- a unique name for this project -->
|
||||
<id>maven-dashboard-sample-subproject2</id>
|
||||
|
||||
<!-- a short but descriptive name for the project -->
|
||||
<name>Dashboard Sample Subproject2</name>
|
||||
|
||||
<!-- The version of the project under development, e.g.
|
||||
1.1, 1.2, 2.0-dev -->
|
||||
<currentVersion>1.0</currentVersion>
|
||||
|
||||
<!-- details about the organization that 'owns' the project -->
|
||||
<organization>
|
||||
<name>Apache Software Foundation</name>
|
||||
<url>http://jakarta.apache.org/</url>
|
||||
</organization>
|
||||
|
||||
<!-- the year the project started -->
|
||||
<inceptionYear>2003</inceptionYear>
|
||||
|
||||
<!-- the top level of java packages that this project defines
|
||||
e.g. if your project contains the packages
|
||||
com.mycompany.accounts.reports, com.mycompany.accounts.reports
|
||||
and com.mycompany.accounts.utils, the package would be
|
||||
'com.mycompany.accounts' -->
|
||||
<package>org.apache.maven.dashboard.sample.subproject2</package>
|
||||
|
||||
<!-- a short description of what the project does -->
|
||||
<shortDescription>A sample project using the Dashboard report</shortDescription>
|
||||
|
||||
<!-- the project home page -->
|
||||
<url>http://maven.apache.org/</url>
|
||||
|
||||
<!-- the version control repository and http url for online access
|
||||
the connection element has the form:
|
||||
scm:<system>:<system specific connection string> -->
|
||||
<repository>
|
||||
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven</connection>
|
||||
<url>http://cvs.apache.org/viewcvs/maven/</url>
|
||||
</repository>
|
||||
|
||||
<!-- any mailing lists for the project -->
|
||||
<mailingLists/>
|
||||
|
||||
<!-- who the developers are for the project -->
|
||||
<developers/>
|
||||
|
||||
<!-- jar files the project is dependent on -->
|
||||
<dependencies/>
|
||||
|
||||
<!-- build information for the project -->
|
||||
<build>
|
||||
<sourceDirectory>src/java</sourceDirectory>
|
||||
</build>
|
||||
|
||||
<reports>
|
||||
<report>maven-checkstyle-plugin</report>
|
||||
</reports>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,80 @@
|
||||
package org.apache.maven.dashboard.sample.subproject2;
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 2001 The Apache Software Foundation. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. The end-user documentation included with the redistribution,
|
||||
* if any, must include the following acknowledgment:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowledgment may appear in the software itself,
|
||||
* if and wherever such third-party acknowledgments normally appear.
|
||||
*
|
||||
* 4. The names "Apache" and "Apache Software Foundation" and
|
||||
* "Apache Maven" must not be used to endorse or promote products
|
||||
* derived from this software without prior written permission. For
|
||||
* written permission, please contact apache@apache.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "Apache",
|
||||
* "Apache Maven", nor may "Apache" appear in their name, without
|
||||
* prior written permission of the Apache Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Apache Software Foundation. For more
|
||||
* information on the Apache Software Foundation, please see
|
||||
* <http://www.apache.org/>.
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* Example voluntarily generating checsktyle errors.
|
||||
*
|
||||
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
|
||||
*
|
||||
* @version $Id: Sample.java,v 1.1 2003/11/04 21:11:32 vmassol Exp $
|
||||
*/
|
||||
public class Sample
|
||||
{
|
||||
public void someMethod()
|
||||
{
|
||||
// Voluntarily using different brace rules to generate checkstyle
|
||||
// errors...
|
||||
if (true) {
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
18
dashboard/src/plugin-resources/reports/checkstyle.jelly
Normal file
18
dashboard/src/plugin-resources/reports/checkstyle.jelly
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0"?>
|
||||
<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:u="jelly:util">
|
||||
|
||||
<!-- Extract error count from Checkstyle raw XML file -->
|
||||
|
||||
<u:file var="artifactAsFile"
|
||||
name="${maven.dashboard.report.checkstyle.artifact}"/>
|
||||
<j:choose>
|
||||
<j:when test="${artifactAsFile.exists()}">
|
||||
<x:parse var="doc" xml="${artifactAsFile}"/>
|
||||
<x:expr select="count($doc//error)"/>
|
||||
</j:when>
|
||||
<j:otherwise>
|
||||
<j:expr value="n/a"/>
|
||||
</j:otherwise>
|
||||
</j:choose>
|
||||
|
||||
</j:jelly>
|
||||
48
dashboard/src/plugin-resources/templates/dashboard.jsl
Normal file
48
dashboard/src/plugin-resources/templates/dashboard.jsl
Normal file
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<jsl:stylesheet
|
||||
select="$doc"
|
||||
xmlns:j="jelly:core"
|
||||
xmlns:jsl="jelly:jsl"
|
||||
xmlns:x="jelly:xml"
|
||||
xmlns="dummy" trim="false">
|
||||
|
||||
<jsl:template match="dashboard">
|
||||
<document>
|
||||
<properties>
|
||||
<title>Dashboard Report</title>
|
||||
</properties>
|
||||
<body>
|
||||
<section name="Dashboard report">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Project</th>
|
||||
<x:forEach var="reportName" select="project[1]/report/@name">
|
||||
<th>
|
||||
<j:set var="labelProperty"
|
||||
value="maven.dashboard.report.${reportName.value}.label"/>
|
||||
<j:expr value="${context.getVariable(labelProperty)}"/>
|
||||
</th>
|
||||
</x:forEach>
|
||||
</tr>
|
||||
<jsl:applyTemplates/>
|
||||
</table>
|
||||
</section>
|
||||
</body>
|
||||
</document>
|
||||
</jsl:template>
|
||||
|
||||
<jsl:template match="project">
|
||||
<tr>
|
||||
<td><x:expr select="@name"/></td>
|
||||
<jsl:applyTemplates select="report"/>
|
||||
</tr>
|
||||
</jsl:template>
|
||||
|
||||
<jsl:template match="report">
|
||||
<td>
|
||||
<x:expr select="text()"/>
|
||||
</td>
|
||||
</jsl:template>
|
||||
|
||||
</jsl:stylesheet>
|
||||
1
dashboard/xdocs/.cvsignore
Normal file
1
dashboard/xdocs/.cvsignore
Normal file
@ -0,0 +1 @@
|
||||
stylesheets
|
||||
18
dashboard/xdocs/changes.xml
Normal file
18
dashboard/xdocs/changes.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0"?>
|
||||
<document>
|
||||
<properties>
|
||||
<title>Changes</title>
|
||||
<author email="vmassol@apache.org">Vincent Massol</author>
|
||||
</properties>
|
||||
|
||||
<body>
|
||||
|
||||
<release version="1.0" date="in CVS">
|
||||
<action dev="vmassol" type="add">
|
||||
Initial creation.
|
||||
</action>
|
||||
</release>
|
||||
|
||||
</body>
|
||||
</document>
|
||||
|
||||
27
dashboard/xdocs/goals.xml
Normal file
27
dashboard/xdocs/goals.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<document>
|
||||
<properties>
|
||||
<title>Maven Dashboard plugin goals</title>
|
||||
<author email="vmassol@apache.org">Vincent Massol</author>
|
||||
</properties>
|
||||
<body>
|
||||
<goals>
|
||||
<goal>
|
||||
<name>dashboard</name>
|
||||
<description>
|
||||
Default goal. Does the same as <code>dashboard:report</code>.
|
||||
</description>
|
||||
</goal>
|
||||
<goal>
|
||||
<name>dashboard:report</name>
|
||||
<description>
|
||||
Generate the dashboard report (HTML). Note: This goal should
|
||||
usually not be called directly. It is called automatically if
|
||||
you register a dashboard report in your master
|
||||
<code>project.xml</code> file.
|
||||
</description>
|
||||
</goal>
|
||||
</goals>
|
||||
</body>
|
||||
</document>
|
||||
90
dashboard/xdocs/index.xml
Normal file
90
dashboard/xdocs/index.xml
Normal file
@ -0,0 +1,90 @@
|
||||
<?xml version="1.0"?>
|
||||
<document>
|
||||
|
||||
<properties>
|
||||
<title>Maven Dashboard plugin</title>
|
||||
<author email="vmassol@apache.org">Vincent Massol</author>
|
||||
</properties>
|
||||
|
||||
<body>
|
||||
<section name="Maven Dashboard plugin">
|
||||
<p>
|
||||
Generate a dashboard HTML report containing information gathered
|
||||
from other Maven reports (Checkstyle, Clover, JUnit, Simian, etc).
|
||||
The dashboard aggregate this information for all subprojects,
|
||||
presenting them in a single tabular format.
|
||||
</p>
|
||||
<p>
|
||||
Current features:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Pluggable architecture. It allows to add custom probes for any
|
||||
kind of report, be them Maven reports or anything else (like
|
||||
calling an SCM system, calling JIRA, etc). A probe is actually a
|
||||
Jelly script so that you have the full power of Jelly at your hand.
|
||||
</li>
|
||||
<li>
|
||||
Provides a default probe for gathering the number of Checkstyle
|
||||
errors in subprojects.
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section name="Quick start">
|
||||
<p>
|
||||
There are several possible ways of using the dashboard plugin.
|
||||
</p>
|
||||
<subsection name="Solution 1: Registering it as a Maven report">
|
||||
<p>
|
||||
In your master project, add a <code>maven-dashboard-report</code>
|
||||
report entry:
|
||||
</p>
|
||||
<source><![CDATA[
|
||||
<reports>
|
||||
[...]
|
||||
<report>maven-dashboard-plugin</report>
|
||||
</reports>
|
||||
]]></source>
|
||||
<p>
|
||||
Then, when you generate the web site (<code>maven site</code>),
|
||||
Maven will generate the dashboard report which will be available
|
||||
in the web site left menu, under "Project Reports".
|
||||
</p>
|
||||
</subsection>
|
||||
<subsection name="Solution 2: Running it manually">
|
||||
<p>
|
||||
In your master project, simply type <code>maven dashboard</code>.
|
||||
This will generate a dashboard xdoc file. Then type
|
||||
<code>maven xdoc</code> to transform it into an HTML file.
|
||||
</p>
|
||||
</subsection>
|
||||
<subsection name="Solution 3: Including it in a custom reactor">
|
||||
<p><strong>
|
||||
Only use this solution if you're already familiar with the
|
||||
dashboard plugin.
|
||||
</strong></p>
|
||||
<p>
|
||||
If you are already running a custom reactor you have the possibility
|
||||
to integrate the dashboard plugin in your reactor build. You would
|
||||
do this to shorten the build time.
|
||||
</p>
|
||||
<p>
|
||||
To do this, you need to add the <code>dashboard:report-single</code>
|
||||
goal to the list of goals being run by your reactor. The best option
|
||||
is to ensure this goal is run after the other goals generating the
|
||||
report artifacts needed by the dashboard probes you're running. In
|
||||
order to prevent the <code>dashboard:report-single</code> goal from
|
||||
automatically calling the report artifact goals, you'll need to add
|
||||
the following property: <code>maven.dashboard.rungoals = false</code>.
|
||||
</p>
|
||||
<p>
|
||||
At the master project level, you'll simply need to add a report entry
|
||||
as described above in 'Solution 1'. You'll also need to add the
|
||||
following property: <code>maven.dashboard.runreactor = false</code>.
|
||||
This property prevents the dashboard plugin from automatically calling
|
||||
the dashboard reactor.
|
||||
</p>
|
||||
</subsection>
|
||||
</section>
|
||||
</body>
|
||||
</document>
|
||||
15
dashboard/xdocs/navigation.xml
Normal file
15
dashboard/xdocs/navigation.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<project name="Maven Dashboard plugin">
|
||||
|
||||
<title>Maven Dashboard plugin</title>
|
||||
|
||||
<body>
|
||||
<links>
|
||||
<item name="Maven" href="http://maven.apache.org/"/>
|
||||
</links>
|
||||
<menu name="Overview">
|
||||
<item name="Goals" href="/goals.html"/>
|
||||
<item name="Properties" href="/properties.html"/>
|
||||
</menu>
|
||||
</body>
|
||||
</project>
|
||||
61
dashboard/xdocs/properties.xml
Normal file
61
dashboard/xdocs/properties.xml
Normal file
@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<document>
|
||||
<properties>
|
||||
<title>Maven Dashboard plugin properties</title>
|
||||
<author email="vmassol@apache.org">Vincent Massol</author>
|
||||
</properties>
|
||||
<body>
|
||||
<section name="Dashboard plugin properties">
|
||||
<source><![CDATA[
|
||||
# Properties for the dashboard reactor
|
||||
# ------------------------------------
|
||||
|
||||
maven.dashboard.basedir=${basedir}
|
||||
maven.dashboard.includes=*/project.xml
|
||||
maven.dashboard.excludes=**/target/**/project.xml,project.xml
|
||||
maven.dashboard.ignoreFailures=false
|
||||
|
||||
# Generated dashboard xml data file
|
||||
maven.dashboard.report.xml = ${maven.build.dir}/dashboard-data.xml
|
||||
|
||||
# Generated dashboard xdoc file name (without the extension).
|
||||
# Note: The value must not include any path as the xdoc will be
|
||||
# generated in ${maven.gen.docs}.
|
||||
maven.dashboard.report.xdoc = dashboard-report
|
||||
|
||||
# Location of JSL template to generate the xdoc file
|
||||
maven.dashboard.template = ${plugin.resources}/templates/dashboard.jsl
|
||||
|
||||
# Decide whether a call to dashboard:report will call the reactor
|
||||
# on the child projects to generate individual dashboard data. If you
|
||||
# already using the multiproject project or the reactor, a better option
|
||||
# is to add dashboard:report-single to the list of goals you're running.
|
||||
# In which case, you'll need to set the following property to false
|
||||
# (otherwise the reactor will be run again on your child projects).
|
||||
maven.dashboard.runreactor = true
|
||||
|
||||
# Properties for gathering dashboard data for a single project
|
||||
# ------------------------------------------------------------
|
||||
|
||||
# Location of default dashboard adaptors
|
||||
maven.dashboard.reports.dir = ${plugin.resources}/reports
|
||||
|
||||
# List of reports to aggregate
|
||||
maven.dashboard.reports = checkstyle
|
||||
|
||||
# Properties for the default checkstyle adaptor
|
||||
maven.dashboard.report.checkstyle.script = ${maven.dashboard.reports.dir}/checkstyle.jelly
|
||||
maven.dashboard.report.checkstyle.artifact = ${maven.build.dir}/checkstyle-raw-report.xml
|
||||
maven.dashboard.report.checkstyle.label = Checkstyle errors
|
||||
maven.dashboard.report.checkstyle.goal = checkstyle
|
||||
|
||||
# Generated dashboard data for a single project
|
||||
maven.dashboard.report.single = ${maven.build.dir}/dashboard-single.xml
|
||||
|
||||
# Decide whether to call goals associated with report types or not
|
||||
maven.dashboard.rungoals = true
|
||||
]]></source>
|
||||
</section>
|
||||
</body>
|
||||
</document>
|
||||
Loading…
x
Reference in New Issue
Block a user