Tag: gradle

Gradle和JaCoCo:来自单独子项目的仪器类

我有一个遗留应用程序,它有一个与应用程序模块分开的unit testing模块。 我正在将项目转换为使用Gradle,结构如下所示: /root /module1 /module2 … /moduleN /test 其中测试模块执行module1到moduleN的测试(并依赖于它们)。 我知道这不是一个很好的做法,因为它有点挫败了unit testing的目的,但众所周知,遗留代码总是令人头疼。 所以在我开始重构代码之前,每个模块都有自己的unit testing(这意味着以合理的方式拆卸测试模块,即大量工作)我想找到一个临时解决方案来获得正确的代码覆盖率,即,让JaCoCo设备来自module1,…,moduleN的所有类,而不仅仅是模块测试。 有没有办法告诉JaCoCo从其他模块中检测类?

无法使用Parse运行应用程序

我有Parse的问题。 我有sdk(在Parse.com上下载并在我的项目中解压缩/ libs文件夹中),当我构建一切都很好。 但是当我运行应用程序时,我有以下错误: 错误:任务’:app:transformClassesWithDexForDebug’的执行失败。 com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程’命令’C:\ Program Files \ Java \ jdk1.8.0_66 \ bin \ java.exe”以非零退出值2结束 我不知道该怎么做,我搜索并尝试了我在StackOverflow和Parse的github repo上找到的所有东西,但没有任何效果:/ 任何想法 ? 在此先感谢您的回答。

从Gradle运行Ant脚本

我正在尝试从Gradle运行ant脚本,但我有这个例外: Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found. 而且我宁愿使用来自本地库的ant-junit,但我不知道如何,我对Gradle很新。 我找到了这段代码 configurations { antClasspath } dependencies { antClasspath ‘org.apache.ant:ant-junit4:1.8.3’ } ClassLoader antClassLoader = org.apache.tools.ant.Project.class.classLoader configurations.antClasspath.each { File f -> antClassLoader.addURL(f.toURI().toURL()) } 但是如果jar已经在mt lib文件夹中,我不知道我要改变什么。 我不想使用maven repo。

Android Studio Gradle:执行静态Java方法(从ANT迁移到Gradle)

我正在尝试从构建过程的build.gradle脚本asp art中运行java类的静态main方法。 我在Android / Gradle插件’com.android.tools.build:gradle:1.0.0’中使用Android Studio 1.0.2 我想在构建期间运行的主要方法的java类位于… \ trunk-gradle \ myproject \ src \ main \ java \ de \ myapp \ gradle package de.myapp.gradle; public class ConfigureCustomer { public static void main(String[] args){ String server = args[0]; String customer = args[1]; System.out.println(String.format(“Configuring customer %s with server %s”, customer, server)); } } 在我使用ANT调用该java方法之前,如下所示: 但是现在我正在迁移到Groovy,所以这里是我的项目的build.gradle文件的相关部分,它试图执行上面的类的主要方法(实际任务定义就在依赖项之前): […]

如何使用Gradle将源发布到本地maven存储库?

我正在开发两个相关的项目。 其中一个是“帮手”,另一个是“主要”。 我不断更新“主要”,但我不时也更新“帮助”。 之后我在gradle的maven插件中运行install目标并在本地maven repo中获取jar。 之后,我在“主”项目中进行gradle更新并更新了jar子链接。 有两个问题。 1)如果使用maven插件,那么如何将源代码发布到本地maven repo中呢? 2)我可以在没有maven插件的情况下进行类似操作,只能使用Gradle吗?

如何在Gradle中解决循环依赖

我正在将Java项目从Ant迁移到Gradle。 我认为最好的解决方案是使用Gradle的多项目支持,但我找不到摆脱循环依赖的方法。 原始项目设置为具有以下布局: – project/ – common/ – product-a/ – product-b/ common , product-a和product-b之间的关系很棘手。 common取决于product-a或product-b ,具体取决于配置文件。 同样,无论配置属性如何, product-a和product-b依赖于common 。 product-a和product-b永远不会同时构建。 我认为一个快速的解决方案是在project/build.gradle使用这样的东西: project(‘:product-a’) { dependencies { compile project(‘:common’) } } project(‘:product-b’) { dependencies { compile project(‘:common’) } } 接下来,我想到了一种方法,让它更接近于只为product-a而工作。 这导致我这样: project(‘:common’) { dependencies { compile project(‘:product-a’) } } 这将引发具有循环依赖性的exception。 我已经考虑通过设置common和product-a / product-b期望的类的接口或者使用多态来重构product-a和product-b ,但在我推进其中任何一个之前,是否有更好的方法用Gradle完成这个任务? 我还没准备好摆脱这种技术债务。

Gradle中的注释处理器将源文件输出到构建/类,使javadoc失败。 怎么解决?

我有一个注释处理器,在构建时由Java编译器自动拾取(使用SPI)。 在gradle构建期间,此批注处理器的生成的java源放在构建/类中,因为Gradle告诉注释处理器这是输出生成的源文件的位置。 当运行标准的javadoc任务时,它会尝试为build / classes中的所有文件创建javadoc,包括* .java。 这很糟糕,因为javadoc只需要* .class文件,这使整个构建失败。 所以我的问题是: 这是Gradle bug /function吗? 我该如何解决它/使它工作?

使用Intellij在gradle项目中设置断点

现在IntelliJ 12.1已经出来了,我希望能够将调试器附加到’gradle run’应用程序并让它在断点处停止。 我已经尝试了右键单击运行并选择调试它,并按照此答案中的建议设置GRADLE_OPTS环境变量: 使用IntelliJ调试Gradle插件 并远程连接调试器,工作正常,但没有一个在断点上打破。 我肯定错过了什么。

在gradle中将参数传递给编译器和javadoc

我正在尝试将Gradle作为现有项目的替代构建系统。 该项目利用sun.misc.Unsafe导致类似这样的警告: warning: Unsafe is internal proprietary API and may be removed in a future release import sun.misc.Unsafe; 要禁止此警告, -XDignore.symbol.file作为参数传递给当前ant脚本中的javac和javadoc。 为了在Gradle中抑制这些警告,我不得不求助于我觉得“脏”的黑客,我不太习惯。 apply plugin: ‘java’ compileJava { // I only managed to get this working when I forked // and passed ‘javac’ as an executable options.compilerArgs << '-XDignore.symbol.file' options.fork = true options.forkOptions.executable = 'javac' } javadoc […]

在Dalvik运行时设备上运行Espresso仪器测试的问题

我遇到类似的问题, FragmentActivity无法通过ActivityInstrumentationTestCase2进行测试 顶级解决方案存在的问题仅适用于使用Eclipse构建系统。 我正在使用Gradle作为我的项目。 在运行ART运行时的Nexus 5上,我的Espresso仪器测试运行完美。 当我在Dalvik运行时或模拟器上使用Nexus 4时,我遇到了在测试框架之外运行应用程序时不会发生的exception。 java.lang.NoClassDefFoundError: com.packagename.fragment.ProgressDialogFragment 在日志中,我发现这些可疑消息类似于链接的问题: Class resolved by unexpected DEX: Landroid/support/v4/app/DialogFragment2;(0x41e969d8):0x76064000 ref [Landroid/support/v4/app/DialogFragment;] Landroid/support/v4/app/DialogFragment;(0x41e969d8):0x75883000 (Landroid/support/v4/app/DialogFragment2; had used a different Landroid/support/v4/app/DialogFragment; during pre-verification) Unable to resolve superclass of Landroid/support/v4/app/DialogFragment2; (271) Link of class ‘Landroid/support/v4/app/DialogFragment2;’ failed Unable to resolve superclass of Lcom/packagename/fragment/ProgressDialogFragment; (270) Link of class ‘Lcom/packagename/fragment/ProgressDialogFragment;’ failed Could not find […]