Tag: gradle

Maven发布gradle插件跳过版本

我有gradle多模块项目配置kotlin脚本。 我想添加发布到Maven仓库,我发现它的maven-publish插件。 但它似乎跳过了为每个项目配置的版本: MyProject/build.gradle.kts : subprojects { apply { plugin("maven-publish") } configure<PublishingExtension>() { publications { repositories { … } create<MavenPublication>("myPublication") { from(components.getByName("java")) logger.lifecycle("test: ${project.group} ${project.name} ${project.version}") } } MyProject/subproject1/build.gradle.kts : version = "1.0.0-SNAPSHOT" gradle publish输出: test: my.project subproject1 unspecified artifact file does not exist: '…/MyProject/subproject1/build/libs/subproject1.jar' 文件subproject1.jar不存在,但subproject1-1.0.0-SNAPSHOT.jar会。 如何使gradle得到正确版本的模块?

gradle构建测试时如何执行一些代码

Kotlin有一个名为all open的编译器插件。 它强制所有带有一些注释的类都是打开的。 我想为我的测试使用这个特性,但是我不想让它在我的生产代码中(我想让我的类关闭)。 我该怎么做? 我尝试了这样的: test { allOpen { annotation('com.my.Annotation') } } 但代码总是执行。

如何运行./gradlew测试

我试图从命令行测试一个应用程序。 当我从Android Studio运行测试时,一切都很顺利。 但是当我尝试运行命令时: ./gradlew test 我得到这个错误: Task 'test' not found in root project 'mvp_kotlin_example'. 我没有使用./gradlew构建或./gradlew干净的问题。 我刚刚创建了一个项目来尝试./gradlew测试,它工作。 在mvp_kotlin_example中,我使用Robolectric进行测试,并使用Kotlin进行开发。 那么我怎样才能让我的测试从命令行工作? 编辑: 这是一个开源项目,所以所有的代码都可以在这里找到 https://github.com/leandroBorgesFerreira/mvp-kotlin-example 这是我的build.gradle文件: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply from: '../jacoco.gradle' android { compileSdkVersion 25 buildToolsVersion "25.0.0" defaultConfig { applicationId "br.com.simplepass.simplepassnew" minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" } buildTypes […]

为什么Gradle构建的Kotlin源代码暂停〜3秒“强制System.gc()”?

每个构建需要额外的3-4秒,在日志输出打印以下后立即暂停。 [LIFECYCLE] [org.jetbrains.kotlin.gradle.plugin.KotlinGradleBuildServices]强制System.gc() 为什么要“强迫”呢? 我如何避免这种情况,加快我的构建?

Kapt3:java.io.File不能转换为java.lang.String

使用apply plugin: 'kotlin-kapt'并运行Gradle构建我的应用程序时有一个例外: Caused by: java.lang.ClassCastException: java.io.File cannot be cast to java.lang.String at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.disableAnnotationProcessingInJavaTask(Kapt3KotlinGradleSubplugin.kt:293) at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.buildOptions(Kapt3KotlinGradleSubplugin.kt:156) at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.createKaptKotlinTask(Kapt3KotlinGradleSubplugin.kt:246) at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.apply(Kapt3KotlinGradleSubplugin.kt:136) at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.apply(Kapt3KotlinGradleSubplugin.kt:48) at org.jetbrains.kotlin.gradle.plugin.SubpluginEnvironment.addSubpluginOptions(KotlinPlugin.kt:685) at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.processVariantData(KotlinPlugin.kt:452) at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.access$processVariantData(KotlinPlugin.kt:326) at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin$apply$2.execute(KotlinPlugin.kt:370) at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin$apply$2.execute(KotlinPlugin.kt:326) at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93) at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82) at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy15.afterEvaluate(Unknown Source) at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82) … 56 more 这个异常发生在配置阶段: org.gradle.api.ProjectConfigurationException: A […]

用Gradle和Kotlin构建一个可执行的jar

我已经写了一个简单的kotlin源文件,以便开始,并且一个gradle脚本文件。 但我不知道如何将主要的func添加到清单,以便该jar可以自我执行。 这里我的build.gradle脚本: buildscript { repositories { mavenCentral() } dependencies { classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.9.66' } } apply plugin: "kotlin" repositories { mavenCentral() } dependencies { compile 'org.jetbrains.kotlin:kotlin-stdlib:0.9.66' } jar { manifest { attributes 'Main-Class': 'com.loloof64.kotlin.exps.ExpsPackage' } } 这是我的com.loloof64.kotlin.exps.Multideclarations.kt package com.loloof64.kotlin.exps class Person(val firstName: String, val lastName: String) { fun component1(): String { return firstName } fun […]

运行Android(使用Kotlin编写)使用Gradle2.0.0-alpha插件编译的项目时出错

当我用新的gradle2.0.0-alpha编译项目时, java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.ClassNotFoundException: Didn't find class "com.android.tools.fd.runtime.BootstrapApplication" on path: DexPathList[[zip file "/data/app/com.inoutdelivery.enfesta-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 有任何想法吗?

错误:执行失败的任务':app:kaptDemoTestingDebugKotlin'

我第一次使用kotlin并尝试在其中运行数据绑定。 我不断收到这个错误: 错误:执行任务':app:kaptDebugKotlin'失败。 内部编译器错误。 查看日志了解更多详情 我有我的build.gradle(模块:应用程序) apply plugin: 'com.android.application' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 26 defaultConfig { applicationId "in.pmock.practicemock" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } […]

测试包不读取主包中定义的Kotlin类

我似乎无法访问Android Studio项目中我的Kotlin模块中的测试包中的主要类。 请注意,下面显示的所有代码位于导入到Android应用程序中的Kotlin JVM模块中。 这是我的src/main/java代码: import com.google.gson.annotations.SerializedName data class Customer(val password1: String, val password2: String, @SerializedName("last_name") val lastName: String, @SerializedName("first_name") val firstName: String, val email: String) 我的测试代码在src/test/java : class CreateUser { @Test fun createRandomUser() { val random = Random() val randomNumber = random.nextInt(10000000) val customer = Customer("password", "password", "lastName", "firstName", "ted$randomNumber@gmail.com") } } 我的build.gradle代码如下所示: buildscript […]

为什么IntelliJ Idea不能识别我的Spek测试?

我有一个基于Gradle的Kotlin项目,其中包含一些基于JUnit的Spek测试,并且应该与Idea兼容。 但是我没有看到上下文菜单中的“运行”菜单项。 为什么? 为了能像其他JUnit测试一样在Idea中运行Spek测试,我需要做些什么? 这是我的build.gradle : buildscript { ext.kotlin_version = '1.0.4' repositories { mavenCentral() maven { url "https://dl.bintray.com/jetbrains/spek" } } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M3' } } apply plugin: "kotlin" apply plugin: "application" apply plugin: 'org.junit.platform.gradle.plugin' junitPlatform { filters { engines { include 'spek' } } } mainClassName = "com.mycompany.myproduct.AppKt" sourceSets { deploy } […]