Tag: gradle

在多个“编译…”任务之前连接一个generateSrc gradle任务

背景 我做了一个生成节俭来源的gradle插件。 源代码需要在运行java编译器之前生成。 直到现在它只是: project.compileJava.dependsOn 'generateThrift' 问题 我现在在使用插件的多个项目中使用kotlin,但现在clean build失败,因为compileKotlin在generateThrift 这个问题 在运行任何(也是将来的)编译之前,是否可以运行generateThrift任务?

Gradle花时间看似无所事事

Gradle似乎对我来说真的很慢,我不知道为什么。 每当我运行一个构建需要30秒的时间,根据25秒的输出,它什么都不做。 像这样建设: gradlew build –parallel –offline Kotlin现在正在发生这种情况,当我只使用Java时,增量构建似乎也没有做任何事情 编辑:我有gradle守护进程启用 在开始时,每一个后续的构建都需要比启动守护进程显然无所事事的时间长或长 这是我的项目: https : //github.com/forsakenharmony/GameProt

kapt不能解析protobuf生成的类

在构建过程中出现这样的错误: e: /Users/some/path/SomeClass.java:86: error: cannot find symbol e: e: static ConnectionType getConnectionType(Context context) { e: ^ e: symbol: class ConnectionType e: location: class SomeClass 其中ConnectionType是由protobuf生成的类。 所以看起来像kapt不解决生成的类。 我试过了什么? 起初,我添加了kotlin-apt插件: apply plugin: 'kotlin-kapt' 然后,我添加了brotobuf生成的类到源集: sourceSets { main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'build/generated/source/proto/main/java' } 而且我也想在kapt开始工作之前生成类。 所以我这样命令gradle任务: afterEvaluate { def protoTasks = [] tasks.each { task -> if (task.name.contains('proto') […]

Gradle无法解析来自另一个模块的引用

我有一个与以下模块的项目: 应用 设备 应用程序取决于设备。 设备包含应用程序引用的NetworkComponent类。 进一步来说: package com.some.package.ui.login; import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import com.some.package.R import com.some.package.device.network.NetworkComponent import com.some.package.ui.terms.TermsActivity class LoginActivity : AppCompatActivity(), LoginViewModel.Navigator { val loginViewModel by lazy { LoginViewModel(this, NetworkComponent()) } 在Android Studio中一切都解决了。 但是,当我尝试构建该项目时,遇到了构建错误: e: /Users/android/some-app-android/app/src/main/kotlin/com/some/package/ui/login/LoginActivity.kt: (7, 27): Unresolved reference: network e: /Users/android/some-app-android/app/src/main/kotlin/com/some/package/ui/login/LoginActivity.kt: (13, 55): Unresolved reference: NetworkComponent [KOTLIN] deleting /Users/android/some-app-android/app/build/tmp/kotlin-classes/debug on […]

Gradle:具有依赖版本范围的maven-publish

我正在开发一个依赖于kotlin-stdlib的测试工具库 。 对实现我的lib的项目有最小的影响我试图在发布的maven pom文件中使用版本范围: <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>[1.1.2,2.0)</version> <scope>compile</scope> </dependency> 据此 当Maven遇到一个版本引用的多个匹配时,它使用最高的匹配版本 版本范围应该允许gradle选择适合所有依赖的版本。 但是,当测试它时,即使我的测试项目指定了kotlin-stdlib:1.1.2 ,gradle也会选择可用于我的范围的最高版本。 $ ./gradlew example:dependencies … +— org.jetbrains.kotlin:kotlin-stdlib:[1.1.2] -> 1.1.4-3 | \— org.jetbrains:annotations:13.0 \— se.lovef:kotlin-assert-utils:0.0-SNAPSHOT +— org.jetbrains.kotlin:kotlin-stdlib:[1.1.2,2.0) -> 1.1.4-3 (*) 如果我使用硬性要求 [1.1.2]或软性要求1.1.2似乎并不重要。 如果我在一个android项目中使用我的库,它会失败: 应用程序(1.1.3-2)和测试应用程序(1.1.4-3)的已解决版本不同。 有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict 。 建议的解决方案是在实施项目中添加解决方案规则,例如 configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } } 然而,我不想强​​加给用户,而是我想要我的lib 使用项目中可用的版本,只要它符合我定义的范围[1.1.2,2.0) 如果项目不使用kotlin-stdlib请使用与我的范围匹配的最高版本 如果项目依赖版本不匹配我的lib失败 有什么我可以做我的lib实现这个?

Kotlin代码编译为Jar用于Java Project?

我已经在Kotlin中编写了一个Java库,我想将它编译成Java和Kotlin应用程序可用的jar。 这个想法是,jar应该能够在Java项目和Kotlin项目上工作。 做一个简单的./gradlew clean assemble生成一个jar,当我检查jar时,我可以看到几个导入不包含在普通的Java应用程序也不能访问的jar中: import jet.runtime.typeinfo.JetValueParameter; import kotlin.jvm.internal.Intrinsics; import kotlin.jvm.internal.KotlinClass; import kotlin.jvm.internal.KotlinClass.Kind; import kotlin.jvm.internal.KotlinSyntheticClass; import kotlin.jvm.internal.KotlinSyntheticClass.Kind; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; 我怎么能包括在jar中的上述依赖项? 现在这个罐子只有30kb。 我宁愿不必包含整个Kotlin运行时,但只能在使用的组件中编译。

Kotlin和Gradle没有Maven中央?

我正在尝试在IDEA中构建一个Kotlin项目,而不使用Maven Central(我在防火墙之后)。 我在本地创建了一些flatDir存储库,以获得必要的依赖关系,如此处所述进行设置和编译。 我正在进步,消除错误只是为了获得新的。 但我无法弄清楚我在这里做错了什么。 当我尝试导入Gradle项目时,Intellij IDEA正在抛出这个对话框。 构建脚本错误,发现不支持的Gradle DSL方法:'compile()'! 可能的原因可能是: – 您正在使用的Gradle版本中没有方法(修复Gradle设置) – 您没有应用提供方法的Gradle插件(Apply Gradle插件) – 或者在构建脚本中存在错误资源) 如何让Kotlin和Gradle在离线状态下在本地建立? UPDATE 我试图运行以下修改 buildscript { repositories { flatDir { dirs += 'H:/Processes/Development/libraries/kotlin' dirs += 'H:/Processes/Development/libraries/apache-commons' } } dependencies { classpath 'org.apache.commons:commons-lang3:3.+' classpath 'org.jetbrains.kotlin:kotlin-runtime:1.0.+' classpath 'org.jetbrains.kotlin:kotlin-compiler-embeddable:1.0.+' classpath 'org.jetbrains.kotlin:kotlin-stdlib:1.0.+' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.+' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin-core:1.0.+' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.0.+' } } apply plugin: 'kotlin' […]

从TeamCity 10中的多个Gradle构建步骤收集和聚合jacoco结果

我有以下设置: 我有一个monorepo,里面有多个独立的基于Gradle的版本。 我为repo中的每个项目添加了一个构建步骤,使用每个子目录作为该构建的工作目录。 我使用TC的jacoco增强器来生成每个项目的junit4测试运行报告。 目前发生了什么: 只保留最后一个构建步骤的报告,并将其作为构建概览中显示的那个。 我可以在日志中看到,所有的jacoco报告都按预期生成。 我想达到以下目的: 我希望将所有报告汇总并视为构建的总体覆盖面。 任何帮助真的很感激!

Groovy类在gradle中不可用

我有一个kotlin/spring项目,所以我有这个文件夹结构: – src – main – groovy – org.gradle.tasks CoreTask.groovy – kotlin – org.backend.srs MainApplication.kt – services – repositories – dao 在我的build.gradle我有: … apply plugin: 'kotlin' apply plugin: 'kotlin-spring' apply plugin: 'groovy' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' … task core << { CoreTask coreTask = new CoreTask() } 不过IntelliJ IDEA抱怨类不存在。 即使我尝试导入它没有找到import org.gradle.tasks.CoreTask 。

如何把项目的res文件放到同一个文件夹的jar文件中?

我有gradle问题。 我需要res文件夹中的位置与项目中的位置完全一样,以便以“unbuild”项目中相同的方式将可执行文件发送到资源。 我的项目文件树: Project +–src +–main |–kotlin +–res 在项目资源使用情况下,我按以下方式解决: var serviceAccount = FileInputStream("src/main/res/my_resource_file.json") 而且我需要在汇编保存在jar文件中的资源文件的项目位置 我的build.gradle文件: group 'Bot' version '1.0' buildscript { ext.kotlin_version = '1.1.2' repositories { mavenCentral() jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin' repositories { mavenCentral() } ext { jsoup = "1.10.2" //… firebase_admin = "5.0.0" } dependencies { compile […]