Tag: gradle

Gradle构建中未解决的Kotlin扩展函数的引用

我有用Kotlin编写的所有代码构建多个项目Gradle。 有两个项目:普通和客户端。 子项目在中间文件夹,说“演示”。 所以文件夹结构是: project demo client build.gradle common build.gradle build.gradle gradle.properties settings.gradle settings.gradle: rootProject.name = 'demo' include 'demo/client' include 'demo/common' 客户端依赖于通用项目compile project(":demo/common") 。 共同项目中有一个扩展功能: fun <T> List<Future<T>>.getAll(): Long { var count = 0L this.forEach { it.get() count++ } return count } 如果我尝试在客户端项目中使用它,我会在编译时得到Unresolved reference: getAll异常。 用法: … import org.sandbox.imdg.hazelcast.common.utils.getAll class CassLoader { fun loadCalcData(): Long […]

Gradle 3.0.0(在Android Studio 3.0中)重新排列任务序列(用Kotlin模块编译时)?

我有一个简单的Gradle脚本(只是为了记录我的Gradle任务运行时) class TestScriptTask extends DefaultTask { @TaskAction def testScript() { logger.quiet("My Gradle Task Here") } } project(":app") { task testScript(type: TestScriptTask) { } } 我有一个简单的Android项目,“app”依赖于Kotlin中的一个模块“remotelib”。 我的应用程序的build.gradle依赖关系如下 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':remotelib') // and others } 所以当我运行我的gradle任务如下 ./gradlew :app:assembleRelease :app:testScript 该脚本运行如下(注意任务在这里执行第一) > Task :app:testScript My Gradle Task Here > Task :remotelib:compileReleaseKotlin Using […]

使用Kotlin脚本配置App Engine Gradle插件

我正在尝试使用Gradle脚本Kotlin来配置我的App Engine项目上的构建,但无法弄清楚如何设置cloudSdkHome属性(或根本不需要配置插件)! 在Groovy Gradle脚本中,这样做是这样的: appengine { tools { cloudSdkHome = "/path/to/cloud/sdk" } } build.gradle.kts buildscript { repositories { jcenter() mavenCentral() maven { url = uri("https://plugins.gradle.org/m2/") } } dependencies { classpath("com.google.cloud.tools:appengine-gradle-plugin:+") classpath("net.ltgt.gradle:gradle-apt-plugin:0.10") classpath(kotlinModule("gradle-plugin")) } } repositories { jcenter() mavenCentral() } plugins { java war } apply { plugin("com.google.cloud.tools.appengine") plugin("net.ltgt.apt") } java { sourceSets { "main" { […]

使用Kotlin和Java编译器的Android项目需要很长时间才能编译 – 超过20分钟

app:packageAppDev是我的Kotlin Android Project(拥有java)的最后一个编译器。它持续了20多分钟,但是开始使用Kotlin之前只需要大约3分钟。 我的productFlavor是应用程序,我的buildType是dev。 我在jenkins上的编译器脚本是“gradle clean assembleAppDev”,最后编译成功。 以下是相同的日志 – :app:transformClassesWithShrinkResForAppDev :app:mergeAppDevJniLibFolders :app:transformNativeLibsWithMergeJniLibsForAppDev :app:validateSigningAppDev :app:packageAppDev :app:lintVitalAppDev :app:assembleAppDev

Gradle:从Groovy切换到Kotlin有什么好处?

我是Android开发人员。 因此,我使用Gradle构建android项目。 我在Groovy上编写(约2年)gradle脚本。 由于结果脚本非常紧凑,清晰和易于支持。 这很棒。 但在新版本的Gradle中引入了新的语言–Kotlin。 我的问题是:如果从Groovy切换到Kotlin,有什么好处(用于编写Gradle脚本)?

Gradle脚本Kotlin中的锅炉项目配置

我正在尝试改进我们的项目共享他们的配置的方式。 我们有许多不同的多模块gradle项目,用于我们的所有库和微服务(即许多git仓库)。 我的主要目标是: 为了不让我的Nexus存储库URL在每个项目中都重复(另外,我可以放心地认为它不会改变) 为了让我的定制Gradle插件可以用最少的样板/重复(每个项目都可以使用它们,而且项目唯一关心的是它使用的版本) 没有什么魔力 – 开发人员应该很明白怎样配置一切 我目前的解决方案是一个定制的gradle分发与初始化脚本: 将mavenLocal()和我们的Nexus存储库添加到项目回购(非常类似于Gradle 初始化脚本文档示例 ,除了添加回购以及验证它们) 配置允许我们的gradle插件添加到buildscript类路径的扩展(使用此解决方法 )。 它还将我们的Nexus回购作为buildscript回购添加,因为这是插件托管的地方。 我们有很多插件(建立在Netflix优秀的星云插件上 ),用于各种样板:标准项目设置(kotlin设置,测试设置等),发布,发布,文档等等,这意味着我们的项目build.gradle文件非常多只是为了依赖。 虽然这种方法可行,但是允许可重复的构建(不同于我们之前的应用从URL构建脚本的设置),并且允许离线工作,这确实使它有点神奇,我想知道如果我能做得更好。 这一切都是由github上的Gradle开发人员最近阅读了一个评论(我不确定在哪里),指出构建应该在不依赖于init脚本的情况下工作,也就是说,init脚本应该像记录的例子那样做 – 防止未经授权的回购等 我的想法是编写一些扩展函数,允许我将Nexus repo和插件添加到构建中,看起来像是构建到gradle中的(类似于gradle脚本提供的扩展函数gradleScriptKotlin()和gradleScriptKotlinApi()科特林) 所以我在一个kotlin gradle项目中创建了我的扩展函数: package com.example import org.gradle.api.artifacts.dsl.DependencyHandler import org.gradle.api.artifacts.dsl.RepositoryHandler import org.gradle.api.artifacts.repositories.MavenArtifactRepository fun RepositoryHandler.myNexus(): MavenArtifactRepository { return maven { with(it) { name = "Nexus" setUrl("https://example.com/repository/maven-public") } } } fun DependencyHandler.myPlugins(version: String) : Any { […]

我如何从Gradle中运行Kotlin-Script(* .kts)filles?

我如何从Gradle中运行Kotlin-Script(* .kts)filles? 从命令行,我可以调用:kotlinc -script foo.kts 我怎么能从gradle(build.gradle)做到这一点?

Kotlin 1.0.0-rc-1036注释处理问题

我有一个使用Raizlabs DBFlow 2.2.1的Android应用程序,我更新了我的kotlin版本到1.0.0-rc-1036,但现在当我尝试运行该应用程序时,它给了我以下错误: https://gist.github.com/yiyocx/3cc9cf594121eba7ab0e 我尝试做一个干净的运行,但是这只是第一次启动,在接下来的启动我收到上面的同样的错误。 我认为这个错误是由于注解问题,我正在使用kapt 。 这些是我在app / build.gradle中的DBFlow依赖关系: dependencies { kapt 'com.raizlabs.android:DBFlow-Compiler:2.2.1' compile "com.raizlabs.android:DBFlow-Core:2.2.1" compile "com.raizlabs.android:DBFlow:2.2.1" } kapt { generateStubs = true }

无法使用kotlin-dsl gradle中的定制配置使用所有配置参数

通过gradle-groovy,可以使用很多参数(组,名称,版本,分机,分类器)进行自定义配置: configurations { explode } dependencies { explode (group: 'org.apache.samza', name: 'samza-shell', ext: 'tgz', classifier: 'dist', version: "$SAMZA_VERSION") } 但我不知道如何用kotlin-dsl来做到这一点。 我试过了: val explode by configurations.creating dependencies { explode(group = "org.apache.samza", name = "samza-shell", ext = "tgz", classifier = "dist", version = samzaVersion) // "explode"(group = "org.apache.samza", name = "samza-shell", ext = "tgz", classifier = "dist", […]

Kotlin建立在travis-CI上但没有测试运行

我试图设置我的项目运行在travis-CI上的构建。 我已经得到它的设置,以便它运行并通过,但我的测试不会运行。 他们本地通过。 为了测试我设置一个测试失败,继续构建仍然通过。 这是一个gradle项目,使用testng。 build.gradle文件 group 'org.napoleon' version '1.0-SNAPSHOT' buildscript { ext.kotlin_version = '1.1.4-3' repositories { mavenCentral() jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin' repositories { mavenCentral() jcenter() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" testCompile group : 'org.testng', name : 'testng', version: '6.8' } task wrapper(type: Wrapper) { gradleVersion = '3.4.1' […]