CustomizeAnnotationProcessing - PerfectCarl/androidannotations GitHub Wiki
You have the possibility to customize annotation processing to fit your needs if you have some special use cases. To do so, you can declare options
in your configuration (see below to see how to configure them according to your environment).
Type: boolean
trace
is used to enable or disable @Trace annotation processing. This annotation is used to trace the execution of a method by writing log entries.
Type: string, path
By default, AndroidAnnotations try to find the AndroidManifest.xml
file by looking recursively in parent folders. In case you have a specific project structure, you can specify the path to AndroidManifest.xml
file by using androidManifestFile
option.
Type: string
By default, AndroidAnnotations try to find the R
class by extracting application package from AndroidManifest.xml
file. But in some cases you may want to specify a custom package to look for the R
class. This is why we added resourcePackageName
option.
Type: string, path
Since 3.0, AndroidAnnotations uses a custom logger to write logs in a file during code generation. It'll help everyone to debug and fix configuration in case of issues.
By default, the framework will write logs in {outputFolder}/androidannotations.log
file. And to resolve {outputFolder}
, we're looking for one of the following folders in this order :
- target
- build
- bin
- root project folder
If the output folder can't be resolve you can specify an output file by using logFile
option. Note that you can also use {outputFolder}
placeholder in this value if you just want to change the filename.
Type: string, enum(trace, debug, info, warn, error)
The default log level is set to DEBUG. In case of issues, it could be useful to change it to TRACE with logLevel
option.
Type: boolean
By default, AA uses two appenders : FileAppender
and MessagerAppender
. The former will write in the log file and the latter will show log messages in IDE messages. But, there is also a ConsoleAppender which could be activated by setting true
to logAppenderConsole
option.
You should first check the configuration page to verify your configuration is fine according to your build tool and IDE. Then, please follow one of these instructions to customize annotation processing.
- Right-click on your project, choose "Properties"
- Go to
Java Compiler > Annotation Processing
- Add your options in
processor options
list
- Go to IntelliJ's preferences
- Then go to
Compiler > Annotation Processors
and select your module - Add your options in
Annotation processor options
list
To pass annotation processing argument with maven you MUST use the maven-compiler-plugin
. Since version 3.1 of this plugin, you can use compilerArgs
tag to easily pass multiple arguments. Here is how to use it:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.6</source>
<target>1.6</target>
<compilerArgs>
<arg>-Atrace=true</arg>
<arg>-AlogLevel=trace</arg>
<arg>-AlogConsoleAppender=true</arg>
</compilerArgs>
</configuration>
</plugin>
Thanks to android-apt Gradle plugin we're able to set annotation processing arguments. Here is how to use it:
apply plugin: 'android-apt'
dependencies {
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}
apt {
arguments {
// you can set annotation processing options here
logLevel TRACE
logConsoleAppender true
}
}