<html devsite>
<head>
  <meta name="project_path" value="/_project.yaml">
  <meta name="book_path" value="/versions/6.5.0/_book.yaml">
</head>
<body>

<h1 class="page-title" id="modules.JavaPluginInfo">JavaPluginInfo</h1>

<!-- {% raw %} -->

A provider encapsulating information about Java plugins. <p>At the moment, the only supported kind of plugins are annotation processors.

<h2>Members</h2>
<ul>
    <li>
    <a href="#JavaPluginInfo">JavaPluginInfo</a>
  </li>
      <li>
    <a href="#api_generating_plugins">api_generating_plugins</a>
  </li>
      <li>
    <a href="#java_outputs">java_outputs</a>
  </li>
      <li>
    <a href="#plugins">plugins</a>
  </li>
      <li>
    <a href="#to_json">to_json</a>
  </li>
      <li>
    <a href="#to_proto">to_proto</a>
  </li>
  </ul>

      <h2 id="JavaPluginInfo">JavaPluginInfo</h2>
        <p><pre class="rule-signature"><a class="anchor" href="JavaPluginInfo.html">JavaPluginInfo</a> JavaPluginInfo(runtime_deps, *, processor_class, data=[], generates_api=False)</pre></p>

    The <code>JavaPluginInfo</code> constructor.

          <!-- hide-from-toc is a class used by DevSite for the public Bazel site
      (https://developers.google.com/devsite/reference/styles/headings#hide_headings_from_the_toc) -->
      <h3 class="hide-from-toc">Parameters</h3>
      <table class="table table-bordered table-condensed table-params">
        <colgroup>
          <col class="col-param">
          <col class="param-description">
        </colgroup>
        <thead>
          <tr>
            <th>Parameter</th>
            <th>Description</th>
          </tr>
        </thead>
        <tbody>
                  <tr>
            <td id="JavaPluginInfo.runtime_deps">
              <code>runtime_deps</code>
            </td>
            <td>
                          <code><a class="anchor" href="list.html">sequence</a> of <a class="anchor" href="JavaInfo.html">JavaInfo</a>s</code>;
                                     required<br/>
                          The library containing an annotation processor.
            </td>
          </tr>
                  <tr>
            <td id="JavaPluginInfo.processor_class">
              <code>processor_class</code>
            </td>
            <td>
                          <code><a class="anchor" href="string.html">string</a>; or <a class="anchor" href="globals.html#None">None</a></code>;
                                     required<br/>
                          The fully qualified class name that the Java compiler uses as an entry point to the annotation processor.
            </td>
          </tr>
                  <tr>
            <td id="JavaPluginInfo.data">
              <code>data</code>
            </td>
            <td>
                          <code><a class="anchor" href="list.html">sequence</a> of <a class="anchor" href="File.html">File</a>s; or <a class="anchor" href="depset.html">depset</a> of <a class="anchor" href="File.html">File</a>s</code>;
                                     default = []<br/>
                          The files needed by this annotation processor during execution.
            </td>
          </tr>
                  <tr>
            <td id="JavaPluginInfo.generates_api">
              <code>generates_api</code>
            </td>
            <td>
                                     default = False<br/>
                          Set to true when this annotation processor generates API code. <p>Such annotation processor is applied to a Java target before producing its header jars (which contains method signatures). When no API plugins are present, header jars are generated from the sources, reducing the critical path. <p><em class="harmful">WARNING: This parameter affects build performance, use it only if necessary.</em>
            </td>
          </tr>
                </tbody>
      </table>

        <h2 id="api_generating_plugins">api_generating_plugins</h2>
        <p><pre class="rule-signature"><a class="anchor" href="JavaPluginData.html">JavaPluginData</a> JavaPluginInfo.api_generating_plugins</pre></p>

    Returns data about API generating plugins defined or exported by this target. <p>Those annotation processors are applied to a Java target before producing its header jars (which contain method signatures). When no API plugins are present, header jars are generated from the sources, reducing critical path. <p>The <code>api_generating_plugins</code> is a subset of <code>plugins</code>.


        <h2 id="java_outputs">java_outputs</h2>
        <p><pre class="rule-signature"><a class="anchor" href="list.html">list</a> JavaPluginInfo.java_outputs</pre></p>

    Returns information about outputs of this Java/Java-like target.


        <h2 id="plugins">plugins</h2>
        <p><pre class="rule-signature"><a class="anchor" href="JavaPluginData.html">JavaPluginData</a> JavaPluginInfo.plugins</pre></p>

    Returns data about all plugins that a consuming target should apply.<p>This is typically either a <code>java_plugin</code> itself or a <code>java_library</code> exporting one or more plugins. <p>A <code>java_library</code> runs annotation processing with all plugins from this field appearing in <code>deps</code> and <code>plugins</code> attributes.


        <h2 id="to_json">to_json</h2>
        <p><pre class="rule-signature"><a class="anchor" href="string.html">string</a> JavaPluginInfo.to_json()</pre></p>

    <b>Deprecated</b>. This API is deprecated and will be removed soon. Please do not depend on it. It is <i>disabled</i> with <code>---incompatible_struct_has_no_methods</code>. Use this flag to verify your code is compatible with its imminent removal. <br>Creates a JSON string from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs, a list of these types or a dictionary with string keys and values of these types. Quotes and new lines in strings are escaped. Examples:<br><pre class=language-python>struct(key=123).to_json()
# {"key":123}

struct(key=True).to_json()
# {"key":true}

struct(key=[1, 2, 3]).to_json()
# {"key":[1,2,3]}

struct(key='text').to_json()
# {"key":"text"}

struct(key=struct(inner_key='text')).to_json()
# {"key":{"inner_key":"text"}}

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json()
# {"key":[{"inner_key":1},{"inner_key":2}]}

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json()
# {"key":{"inner_key":{"inner_inner_key":"text"}}}
</pre>.<p>Deprecated: instead, use json.encode(x) or json.encode_indent(x), which work for values other than structs and do not pollute the struct field namespace.


        <h2 id="to_proto">to_proto</h2>
        <p><pre class="rule-signature"><a class="anchor" href="string.html">string</a> JavaPluginInfo.to_proto()</pre></p>

    <b>Deprecated</b>. This API is deprecated and will be removed soon. Please do not depend on it. It is <i>disabled</i> with <code>---incompatible_struct_has_no_methods</code>. Use this flag to verify your code is compatible with its imminent removal. <br>Creates a text message from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs or dicts or lists of these types. Quotes and new lines in strings are escaped. Struct keys are iterated in the sorted order. Examples:<br><pre class=language-python>struct(key=123).to_proto()
# key: 123

struct(key=True).to_proto()
# key: true

struct(key=[1, 2, 3]).to_proto()
# key: 1
# key: 2
# key: 3

struct(key='text').to_proto()
# key: "text"

struct(key=struct(inner_key='text')).to_proto()
# key {
#   inner_key: "text"
# }

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto()
# key {
#   inner_key: 1
# }
# key {
#   inner_key: 2
# }

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto()
# key {
#    inner_key {
#     inner_inner_key: "text"
#   }
# }

struct(foo={4: 3, 2: 1}).to_proto()
# foo: {
#   key: 4
#   value: 3
# }
# foo: {
#   key: 2
#   value: 1
# }
</pre><p>Deprecated: use proto.encode_text(x) instead.



</body>
</html>

<!-- {% endraw %} -->
