#
# 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.
#

report.plugin.name=Plugin Documentation
report.plugin.description=This report provides goals and parameters documentation of a plugin.
report.plugin.title=Plugin Documentation

report.plugin.goals.nogoal=No goals defined in this plugin.
report.plugin.goals.intro=Goals available for this plugin:
report.plugin.goals.column.goal=Goal
report.plugin.goals.column.isMavenReport=Report?
report.plugin.goals.column.description=Description
report.plugin.goal.nodescription=No description.
report.plugin.goal.deprecated=Deprecated.

report.plugin.systemrequirements=System Requirements
report.plugin.systemrequirements.intro=The following specifies the minimum requirements to run this Maven plugin:
report.plugin.systemrequirements.nominimum= No minimum requirement.
report.plugin.systemrequirements.maven=Maven
report.plugin.systemrequirements.jdk=JDK
report.plugin.systemrequirements.memory=Memory
report.plugin.systemrequirements.diskspace=Disk Space

report.plugin.usage=Usage
report.plugin.usage.intro=You should specify the version in your project's plugin configuration:
report.plugin.usage.pluginManagement=To define the plugin version in your parent POM
report.plugin.usage.plugins=To use the plugin goals in your POM or parent POM
report.plugin.usage.reporting=To use the report goals in your POM or parent POM
report.plugin.configuration.end=For more information, see {"Guide to Configuring Plug-ins", http://maven.apache.org/guides/mini/guide-configuring-plugins.html}

report.plugin.isReport=Yes
report.plugin.isNotReport=No
