blob: a13e2f993c5c915178f234e689734d2e0fe1b8b8 [file] [log] [blame]
{namespace java_library}
/***/
{template .soyweb}
{call buck.page}
{param title: 'java_library()' /}
{param prettify: true /}
{param content}
{call buck.rule}
{param overview}
A <code>java_library()</code> rule is used to define a set of Java
files that can be compiled together. The main output of a
{sp}<code>java_library()</code> rule is a single JAR file containing all
of the compiled class files and resources.
{/param}
{param args}
{call buck.arg}
{param name: 'name' /}
{param desc}
The name of the rule.
{/param}
{/call}
{call buck.arg}
{param name: 'srcs' /}
{param default : '[]' /}
{param desc}
The set of <code>.java</code> files to compile for this rule.
If any of the files in this list end in <code>.src.zip</code>,
then the entries in the ZIP file that end in <code>.java</code> will be
included as ordinary inputs to compilation. This is common when using
a {call buck.genrule /} to auto-generate some Java source code that
needs to be compiled with some hand-written Java code.
{/param}
{/call}
{call buck.arg}
{param name: 'resources' /}
{param default : '[]' /}
{param desc}
Static files to include among the compiled <code>.class</code>
{sp}files. These files can be loaded via <a
href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource(java.lang.String)"
target="_blank">Class.getResource()</a>.
<p>
<strong>Note:</strong> Buck uses the <code>src_roots</code> property in
{sp}<a href="{ROOT}concept/buckconfig.html"><code>buckconfig.html</code></a>
{sp}to help determine where resources should be placed within the generated JAR file.
<p>
{/param}
{/call}
{call buck.arg}
{param name: 'deps' /}
{param default : '[]' /}
{param desc}
Rules (usually other <code>java_library</code> rules) that are used to
generate the classpath required to compile this <code>java_library</code>.
{/param}
{/call}
{call buck.arg}
{param name: 'source' /}
{param default : '\'6\'' /}
{param desc}
Java language level for compiling. Corresponds to the
{sp}<code>-source</code> argument for <code>javac</code>.
{/param}
{/call}
{call buck.arg}
{param name: 'target' /}
{param default : '\'6\'' /}
{param desc}
Bytecode target level for compiling. Corresponds to the
{sp}<code>-target</code> argument for <code>javac</code>.
{/param}
{/call}
{call buck.arg}
{param name: 'export_deps' /}
{param default : 'False' /}
{param desc}
Whether or not depending on this rule should also transitively pull in all of
its dependencies.
{/param}
{/call}
{call buck.visibility_arg /}
{/param} // close args
{param examples}
{literal}<pre class="prettyprint lang-py">
# A rule that compiles a single .java file.
java_library(
name = 'JsonUtil',
srcs = ['JsonUtil.java'],
deps = [
'//third_party/guava:guava',
'//third_party/jackson:jackson',
],
)
# A rule that compiles all of the .java files under the directory in
# which the rule is defined using glob(). It also excludes an
# individual file that may has additional dependencies, so it is
# compiled by a separate rule.
java_library(
name = 'messenger',
srcs = glob(['**/*.java'], excludes = ['MessengerModule.java']),
deps = [
'//src/com/facebook/base:base',
'//third_party/guava:guava',
],
)
java_library(
name = 'MessengerModule',
srcs = ['MessengerModule.java'],
deps = [
'//src/com/facebook/base:base',
'//src/com/google/inject:inject',
'//third_party/guava:guava',
'//third_party/jsr-330:jsr-330',
],
)
# A rule that builds a library with both relative and
# fully-qualified deps.
java_library(
name = 'testutil',
srcs = glob(['tests/**/*.java'], excludes = 'tests/**/*Test.java'),
deps = [
':lib-fb4a',
'//java/com/facebook/base:base',
],
)
</pre>{/literal}
{/param}
{/call} // close buck.rule
{/param}
{/call}
{/template}