Usar las extensiones de resources de Kotlin para Android usando solo Maven

Me gustaría utilizar las extensiones de Kotlin para Android en mi proyecto basado en Maven, pero a pesar de agregar kotlin-android-extensions a mi set de complementos Maven, simplemente no funciona.

Mi configuration, creo que bastante minimalist, es la siguiente:

 . ├── AndroidManifest.xml ├── pom.xml ├── res │  └── layout │  └── main_activity.xml └── src └── activity.kt 

AndroidManifest.xml :

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.KotlinAndroid" android:versionCode="1" android:versionName="0.1-SNAPSHOT"> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> <application android:label="Hello Kotlin"> <activity android:name=".activity.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

pom.xml :

 <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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example.KotlinAndroid</groupId> <artifactId>hello-kotlin</artifactId> <packaging>apk</packaging> <name>hello-kotlin</name> <version>0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>4.1.1.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>1.0.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.8.2</version> <configuration> <sdk> <platform>19</platform> </sdk> <undeployBeforeDeploy>true</undeployBeforeDeploy> </configuration> <extensions>true</extensions> </plugin> <plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>1.0.0</version> <executions> <execution> <id>compile</id> <phase>process-sources</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>process-test-sources</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-android</artifactId> <version>1.0.0</version> </plugin> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-android-extensions</artifactId> <version>1.0.0</version> </plugin> <!-- I needed to add this plugin otherwise my Kotlin source files are not found --> <plugin> <groupId>org.codehaus.mojo</groupId> <version>1.10</version> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <phase>generate-sources</phase> <goals><goal>add-source</goal></goals> <configuration> <sources> <source>src</source> </sources> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> 

res/layout/main_activity.xml :

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Hello World!" android:id="@+id/textView" /> </LinearLayout> 

src/activity.kt :

 package com.example.KotlinAndroid.activity import android.os.Bundle import android.app.Activity import com.example.KotlinAndroid.R class MainActivity() : Activity() { protected override fun onCreate(savedInstanceState : Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) } } 

Así que todo esto funciona hasta que cambie activity.kt para importar kotlinx.android.synthetic.main.main_activity.* lugar de import com.example.KotlinAndroid.R , que luego falla con

  • [ERROR] hello-kotlin/src/activity.kt : (6, 8) Referencia no resuelta: kotlinx

  • [ERROR] hello-kotlin/src/activity.kt : (12, 24) Referencia no resuelta: R

Todas las soluciones a este problema que he encontrado se aplican solo a las comstackciones de Gradle, en cuyo caso, aparentemente, es suficiente agregar el kotlin-android-extensions . Sin embargo, en mi versión solo de Maven, ya tengo kotlin-android-extensions en mi list de complementos (mira el file pom.xml ); y sin embargo, Kotlin no genera las classs kotlinx.* requeridas.

    kotlin-android-extensions ahora es parte del plugin kotlin-gradle. El complemento kotlin-maven no es compatible con Android ahora. Hay un problema en su rastreador por el que puede votar.