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

pluginxdoc.yes=Yes
pluginxdoc.no=No
pluginxdoc.detail=<strong>{0}</strong>: <code>{1}</code>

pluginxdoc.description=<strong>Description</strong>:
pluginxdoc.nodescription=(no description)
pluginxdoc.mojodescriptor.notice.note=<strong>Note</strong>:
pluginxdoc.mojodescriptor.notice.isMavenReport=This goal should be used as a Maven report.
pluginxdoc.mojodescriptor.fullname=<strong>Full name</strong>:
pluginxdoc.mojodescriptor.attributes=<strong>Attributes</strong>:
pluginxdoc.mojodescriptor.deprecated=<strong>This plugin goal has been deprecated</strong>:
pluginxdoc.mojodescriptor.projectRequired=Requires a Maven project to be executed.
pluginxdoc.mojodescriptor.aggregator=Executes as an aggregator plugin.
pluginxdoc.mojodescriptor.directInvocationOnly=Executes by direct invocation only.
pluginxdoc.mojodescriptor.reportingMojo=Executes only as a reportSet (reporting goal).
pluginxdoc.mojodescriptor.dependencyResolutionRequired=Requires dependency resolution of artifacts in scope: <code>{0}</code>.
pluginxdoc.mojodescriptor.dependencyCollectionRequired=Requires dependency collection of artifacts in scope: <code>{0}</code>.
pluginxdoc.mojodescriptor.since=Since version: <code>{0}</code>.
pluginxdoc.mojodescriptor.phase=Binds by default to the lifecycle phase: <code>{0}</code>.
pluginxdoc.mojodescriptor.executePhase=Invokes the execution of the lifecycle phase <code>{0}</code> prior to executing itself.
pluginxdoc.mojodescriptor.executeGoal=Invokes the execution of this plugin's goal <code>{0}</code> prior to executing itself.
pluginxdoc.mojodescriptor.executeLifecycle=Executes in its own lifecycle: <code>{0}</code>.
pluginxdoc.mojodescriptor.onlineRequired=Requires that Maven runs in online mode.
pluginxdoc.mojodescriptor.inheritedByDefault=Is NOT inherited by default in multi-project builds.
pluginxdoc.mojodescriptor.parameter.details=Parameter Details
pluginxdoc.mojodescriptor.parameter.deprecated=<strong>Deprecated.</strong> {0}
pluginxdoc.mojodescriptor.parameter.name=Name
pluginxdoc.mojodescriptor.parameter.name_link=<strong><a href="#{0}">{0}</a></strong>
pluginxdoc.mojodescriptor.parameter.name_internal=<strong><a name="{0}">{0}</a>:</strong>
pluginxdoc.mojodescriptor.parameter.description=Description
pluginxdoc.mojodescriptor.parameter.type=Type
pluginxdoc.mojodescriptor.parameter.since=Since
pluginxdoc.mojodescriptor.parameter.required=Required
pluginxdoc.mojodescriptor.parameter.expression=Expression
pluginxdoc.mojodescriptor.parameter.default=Default
pluginxdoc.mojodescriptor.parameter.defaultValue=<strong>Default value is</strong>: <code>{0}</code>.
pluginxdoc.mojodescriptor.requiredParameters=Required Parameters
pluginxdoc.mojodescriptor.optionalParameters=Optional Parameters
pluginxdoc.mojodescriptor.parameters=Parameters
pluginxdoc.mojodescriptor.noParameter=(no parameters)
pluginxdoc.mojodescriptor.threadSafe=The goal is thread-safe and supports parallel builds.
