javac एनोटेशन के लिए खोज में दोनों स्रोत फ़ाइलें (जावा) और वर्गों स्कैन कर सकते हैं: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html#processing
इसका मतलब यह है कि आप इस काम कर सकते हैं अगर आप Kotlin कोड में संदर्भित किसी डैगर-उत्पन्न वर्गों की जरूरत नहीं है (जो डैगर मॉड्यूल कार्यान्वयन)
- आह्वान kotlin संकलक (कोई डैगर उत्पन्न प्रकार Kotlin कोड में)
- आह्वान एनोटेशन प्रोसेसर (दोनों जावा फ़ाइलें और kotlin संकलित फ़ाइलें)
012,351 में एनोटेशन प्रक्रियाओं का मतलब
- आह्वान जावा संकलक - और दोनों डैगर उत्पन्न प्रकार के लिए उपयोग Kotlin प्रकार
आप दोनों जावा और kotlin में अपनी सेवाओं को लिख सकते हैं, लेकिन मॉड्यूल एक जावा वर्ग
यहाँ से बनाया जाना चाहिए है इसी pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>testkotlindagger</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<kotlin.version>1.0.6</kotlin.version>
<dagger2.version>2.7</dagger2.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
<!-- Dagger 2 -->
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger</artifactId>
<version>${dagger2.version}</version>
</dependency>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger-compiler</artifactId>
<version>${dagger2.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals> <goal>compile</goal> </goals>
<configuration>
<sourceDirs>
<source>src/main/java</source>
<source>src/main/kotlin</source>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals> <goal>test-compile</goal> </goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>2.2.4</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>compile</phase>
<configuration>
<outputDirectory>target/generated-sources/annotations</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<executions>
<!-- Replacing default-compile as it is treated specially by maven -->
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<!-- Replacing default-testCompile as it is treated specially by maven -->
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>java-compile</id>
<phase>compile</phase>
<goals> <goal>compile</goal> </goals>
</execution>
<execution>
<id>java-test-compile</id>
<phase>test-compile</phase>
<goals> <goal>testCompile</goal> </goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
दूसरी ओर, यदि आप अपने kotlin कोड में डैगर-उत्पन्न प्रकारों में शामिल हैं, तो आप इन से पहले उपलब्ध kotlin कोड संकलित किया गया है, जो आपको kotlin अवगत एनोटेशन प्रोसेसर की जरूरत का मतलब है (KAPT होना आवश्यक है)
इस परिदृश्य में समस्या सवाल करने पर निर्भर करता: Is kapt supported in maven?
दुःख की बात है जवाब नहीं है, लेकिन वहाँ एक बग यह समर्थन करने के लिए दायर की है: https://youtrack.jetbrains.com/issue/KT-14478
FYI के.टी.-14,478 तय किया गया है और इस तरह kapt अब अपडेट के लिए धन्यवाद @Markus Maven –
में समर्थित है – Lesiak