= Java Module Configuration
:page-aliases: Java_Module_Config.adoc
:language: Java
:language-small: java
:language-doc: javadoc

This page goes into more detail about the various configuration options
for `JavaModule`.

Many of the APIs covered here are listed in the API documentation:

* {mill-doc-url}/api/latest/mill/javalib/JavaModule.html[mill.javalib.JavaModule]

== Declarative Configuration

include::partial$example/javalib/module/1-basic-config.adoc[]

=== Annotation Processors

include::partial$example/javalib/module/2-annotation-processors.adoc[]

=== Javadoc Config

include::partial$example/javalib/module/3-docjar.adoc[]

== Programmable Configuration

include::partial$example/javalib/module/4-programmable-config.adoc[]


=== Custom Tasks

include::partial$example/javalib/module/5-custom-tasks.adoc[]



=== Generated Sources

include::partial$example/javalib/module/6-generated-sources.adoc[]


=== Classpath and Filesystem Resources

include::partial$example/javalib/module/7-resources.adoc[]

=== Native C Code with JNI

include::partial$example/javalib/module/15-jni.adoc[]

== Integrating Declarative and Programmatic Config

=== Custom Module Traits

include::partial$example/javalib/module/17-custom-trait.adoc[]

=== Programmable `moduleDeps`

include::partial$example/javalib/module/18-programmable-module-deps.adoc[]
