рд╣рдо рдПрдиреЛрдЯреЗрдЯрд╕рдХреНрдХрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЧреНрд░реЗрдбрд▓ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрддреЗ рд╣реИрдВ

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐



рд╣рд╛рдп рд╕рд╛рдерд┐рдпреЛрдВ! рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рд╣реИрдмрд░ рдкрд░ рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдХрд╖реНрдЯрдкреНрд░рдж рдЧрд▓рддрдлрд╣рдореА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЕрдкрдиреА рдиреМрдХрд░реА рдирд╣реАрдВ рдмрджрд▓реА рдереА, рдФрд░ рдЕрдм рдореИрдВ рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░реИрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдлреА рдвреАрд▓реА рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдЧреНрд░реИрдбрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реАрдЦрдиреЗ рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкреНрд▓рдЧрдЗрди рдореЗрд░реЗ рдЕрдЪреНрдЫреЗ рджреЛрд╕реНрдд рдЧреЗрдиреНрдиреЗрдбреА рд╣реИрдореНрд╕реНрдЯрд░рд╕реНрдХреВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЕрджреНрднреБрдд рдПрдиреЛрдЯреЗрдЯ-рдПрд╕рдХреНрдпреВрдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдПред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХрд╛ рд▓рдХреНрд╖реНрдп рдЗрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдЧреНрд░реЗрдб рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреЛрд╕реНрддреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╣реИред

рдХрд╛рд░реНрдп


рдкреНрд▓рдЧрдЗрди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдкрд╣рд▓реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдкреНрд▓рдЧрдЗрди рд╕реЗ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ - рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЬрд╛рд░, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛, рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдЬрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдХреЛрдб рд╕реЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпреЗ рдЬрд╛рд░ рдХрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИрдВ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдЙрдиреНрд╣реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рдорд╛рд╡реЗрди рдХреЗрдВрджреНрд░реАрдп рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдереЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ)ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЙрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЗрдП рдкрд╣рд▓реЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╣рдо рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред

рд╡рд┐рдиреНрдпрд╛рд╕


рдЪреВрдВрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХреЛрдб рд╕реЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрднрд░рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдЗрд╕реЗ asqlapt рдХрд╣реЗрдВрдЧреЗред
configurations { asqlapt } 

рдФрд░ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
 dependencies { asqlapt fileTree(dir: 'libs.apt', include: '*.jar') } 

рдпрд╣рд╛рдБ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ asqlapt рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ libs.apt рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВред

рд╕рдВрдХрд▓рди рд╕рдВрд╢реЛрдзрди


рдЕрдЧрд▓рд╛ рдХрджрдо рд╕рдВрдХрд▓рдХ рдореЗрдВ рдХреАрд▓ рд▓рдЧрд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЖрдЗрдП рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:
 android.applicationVariants.all { variant -> def aptOutput = file("$buildDir/source/apt_generated/$variant.dirName") variant.javaCompile.doFirst { aptOutput.mkdirs() variant.javaCompile.options.compilerArgs += [ '-processorpath', configurations.asqlapt.getAsPath(), '-processor', 'com.annotatedsql.processor.provider.ProviderProcessor,com.annotatedsql.processor.sql.SQLProcessor', '-s', aptOutput ] } } 

рдЗрд╕рд▓рд┐рдП, Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд╣ рд╕рдм рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣реИ рдирд╛?

рдкреНрд▓рдЧрдЗрди рдирд┐рд░реНрдорд╛рдг



рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░рд╛ рдкреНрд▓рдЧрдЗрди рд░реВрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ buildSrc рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЗрд╕ рдбреИрдбреА рдФрд░ рдмрд┐рд▓реНрдб.рдЧреНрд░реЗрдб рдмрдирд╛рдПрдВ:

 apply plugin: 'groovy' dependencies { compile gradleApi() compile localGroovy() } 


рдЕрдм рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЛ src / main / resource / META-INF / gradle-plugins / annotatedsql.properties рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:

 implementation-class=com.evilduck.annotatedsql.AnnotatedSqlPlugin 


рджрд┐рдирдЪрд░реНрдпрд╛ рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИ, рдЕрдм рдХреЛрдб рдХреЗ рд▓рд┐рдПред рдкреНрд▓рдЧрдЗрди рдХреЛрдб Groovy рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдЪрд▓реЛ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдмрдирд╛рдПрдБ:

 public class AnnotatedSqlPlugin implements Plugin<Project> { private Project project public void apply(Project project) { this.project = project } } 


рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдкреНрд▓рдЧрдЗрди рд░рд┐рдХреНрдд рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд╣рдо рд▓рд╛рдЧреВ рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:

 def setupDefaultAptConfigs() { project.configurations.create('apt').with { visible = false transitive = true description = 'The apt libraries to be used for annotated sql.' } project.configurations.create('annotatedsql').with { extendsFrom project.configurations.compile visible = false transitive = true description = 'The compile time libraries to be used for annotated sql.' } project.dependencies { apt project.fileTree(dir: "$project.projectDir/libs-apt", include: '*.jar') annotatedsql project.files("$project.projectDir/libs/sqlannotation-annotations.jar") } } 


рдпрд╣ рд╡рд┐рдзрд┐ рджреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рддреА рд╣реИ - рдЙрдкрдпреБрдХреНрдд рдФрд░ рдПрдиреЛрдЯреЗрдЯрд╕рдХреНрдХрд▓ред рдкрд╣рд▓рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╣реИ, рджреВрд╕рд░рд╛ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиреЛрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛ рдХрджрдо рд╕рдВрдХрд▓рдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ:

 def modifyJavaCompilerArguments() { project.android.applicationVariants.all { variant -> def aptOutput = project.file("$project.buildDir/source/$extension.aptOutputDir/$variant.dirName") variant.javaCompile.doFirst { aptOutput.mkdirs() variant.javaCompile.options.compilerArgs += [ '-processorpath', project.configurations.apt.getAsPath(), '-processor', 'com.annotatedsql.processor.provider.ProviderProcessor,com.annotatedsql.processor.sql.SQLProcessor', '-s', aptOutput ] } } } 


рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рд░реБрдХреЛ, рд╡рд┐рд╕реНрддрд╛рд░ рдХреНрдпрд╛ рд╣реИред Gradle рд╣рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛рддреЗ рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпреЗ рд╕рд░рд▓ POGO рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬреЛ рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ Android рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рдХрдЯрддрдо рд╡рд┐рд╕реНрддрд╛рд░ Android рд╣реИред рд╣рд╛рдВ, рдпрд╣ рдХреЗрд╡рд▓ Android рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдкрдиреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреИрд╕реЗ рдХреА:

 class AnnotatedSqlExtension { public String aptOutputDir } 


рдФрд░ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд╛рдЧреВ рд╡рд┐рдзрд┐ рдореЗрдВ:

 extension = project.extensions.create("annotatedsql", AnnotatedSqlExtension) extension.with { aptOutputDir = "aptGenerated" } 


рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред

рдпрд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреВрд░реЗ рдкреНрд▓рдЧрдЗрди рд╣реИред

рдкреВрд░реНрдг рдХреЛрдб
 public class AnnotatedSqlPlugin implements Plugin<Project> { private Project project private AnnotatedSqlExtension extension public void apply(Project project) { this.project = project project.apply plugin: 'android' extension = project.extensions.create("annotatedsql", AnnotatedSqlExtension) extension.with { aptOutputDir = "aptGenerated" } setupDefaultAptConfigs() modifyJavaCompilerArguments() } def setupDefaultAptConfigs() { project.configurations.create('apt').with { visible = false transitive = true description = 'The apt libraries to be used for annotated sql.' } project.configurations.create('annotatedsql').with { extendsFrom project.configurations.compile visible = false transitive = true description = 'The compile time libraries to be used for annotated sql.' } project.dependencies { apt project.fileTree(dir: "${project.projectDir}/libs-apt", include: '*.jar') annotatedsql project.files("${project.projectDir}/libs/sqlannotation-annotations.jar") } } def modifyJavaCompilerArguments() { project.android.applicationVariants.all { variant -> def aptOutput = project.file("$project.buildDir/source/$extension.aptOutputDir/$variant.dirName") variant.javaCompile.doFirst { aptOutput.mkdirs() variant.javaCompile.options.compilerArgs += [ '-processorpath', project.configurations.apt.getAsPath(), '-processor', 'com.annotatedsql.processor.provider.ProviderProcessor,com.annotatedsql.processor.sql.SQLProcessor', '-s', aptOutput ] } } } } 



рдЕрдм, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' } } apply plugin: 'android' apply plugin: 'annotatedsql' repositories { mavenCentral() } android { //     } /* *  ,    aptOutputDir */ //annotatedsql { // aptOutputDir = "customAptOutputDir" //} /* *  ,     */ //dependencies { // apt project.fileTree(dir: "${project.projectDir}/libszzz-apt", include: '*.jar') // annotatedsql project.files("${project.projectDir}/libszzz/sqlannotation-annotations.jar") //} 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

 apply plugin: 'annotatedsql' 


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдк рдХреЗрдВрджреНрд░реАрдп рднрдВрдбрд╛рд░ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЬрд╛рд░ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧреАред рдЧреНрд░реИрдбрд▓ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХрд╛рдВрдд рдЬрдЧрд╣ рдкрд░ рд░рдЦрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЬрдм рдХреЛрдИ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рднрдВрдбрд╛рд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджреВрд░рд╕реНрде рд▓реЛрдЧреЛрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

 project.dependencies { apt 'com.hamsterksu.asql:something-version' annotatedsql 'com.hamstersku.asql:something-else-version' } 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рдкреНрд▓рдЧрдЗрди рднреА рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рдорд╛рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:

 apply plugin: 'annotatedsql' 


рд╕рдорд╛рдкрди


рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЧреНрд░реЗрдбрдмрд░реНрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╣рд┐рдордЦрдВрдб рдХреА рдиреЛрдХ рд╣реИред рдлрд┐рд░ рднреА, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдЧреНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЧреНрд░реЗрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рдореИрдВ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдкреНрдпрд╛рд░ рдореЗрдВ рдкрдбрд╝ рдЬрд╛рддрд╛ рд╣реВрдВред
рдЗрд╕ рдкрд░ рдореИрдВрдиреЗ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣рдиреЗ рдХреА рдЬрд▓реНрджрдмрд╛рдЬреА рдХреАред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In202480/


All Articles