Использование расширений ресурсов Google для Kotlin с использованием только Maven

Я хотел бы использовать расширения Kotlin для Android в моем проекте на Maven, но, несмотря на добавление kotlin-android-extensions к моему набору плагинов Maven, этого просто не требуется.

Мой, я думаю, довольно минимальный, настройка такова:

 . ├── 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> при <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> , <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) } } 

Так что все это работает до тех пор, пока я не изменю activity.kt для импорта kotlinx.android.synthetic.main.main_activity.* Вместо import com.example.KotlinAndroid.R , который затем не с

Все решения этой проблемы, которые я нашел, применимы только к сборкам Gradle, и в этом случае достаточно добавить kotlin-android-extensions . Однако в моей сборке Maven у меня уже есть kotlin-android-extensions в моем списке плагинов (см. Файл pom.xml ); и все же Котлин не генерирует требуемые kotlinx.* .

    kotlin-android-extensions теперь является частью плагина kotlin-gradle. Плагин kotlin-maven теперь не поддерживает андроид. В вашем трекере есть проблема, за которую вы можете проголосовать.

    Intereting Posts
    Android Studio конвертирует Java в ошибку Kotlin Невозможно вывести тип для этого параметра. Пожалуйста, укажите это явно android.support.v4.app.FragmentManager не может быть предоставлен без @ Provides- или @ Produces-аннотированного метода что это "it <= ''" в функции строчной строки означает здесь Как читать текстовый файл из ресурсов в Котлин? Можно ли использовать Котлин в Граале? Kotlin использует специальный репозиторий SpringData Jpa Kotlin – Как импортировать пакеты узлов? Как запросить тип данных Firebase Firestore Reference? Как реализовать модульный модуль для каждого типа номера в Котлине? Перегруженные методы, получающие функции более высокого порядка в Котлине Не удалось слияние манифеста: при использовании модуля kotlin Создание карты со значениями, содержащими дженерики Как использовать onItemLongClickListener в моей деятельности в Android? Как я могу подавить непроверенные предупреждения о броске? RxJava2 switchIfEmpty и проверка выполнения