:notoc:

= Javadoc

:Notice: 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.

== Latest version

* link:/javadoc/{latestSnapshot}/[{latestSnapshot}]


== Stable Release

* link:/javadoc/{latestStable}/[{latestStable}]

== Contribute

If you would like to submit a javadoc patch through Jira, you can have a
look at the <<suggested-git-workflows#,suggested approach>>.


== Publish procedure (for committers only)


If you're a committer and want to publish the javadoc, you have do the
following steps:

Put the following information in your ~/.m2/settings.xml file

[source,xml]
--------------------------------------
<server>
  <id>deltaspike-site</id>
  <username><YOUR_USERNAME></username>
  <password><YOUR_PASSWORD></password>
</server>
--------------------------------------

Then run:


[source,bash]
-------------------------
$ cd REPO_ROOT/deltaspike
$ ./javadoc.sh
-------------------------

After log in to https://cms.apache.org/deltaspike/publish and click onthe `Submit` button.
