gpt4 book ai didi

java - Gradle Groovy 插件似乎删除了已编译的 Java 类

转载 作者:行者123 更新时间:2023-12-01 12:37:42 25 4
gpt4 key购买 nike

当我尝试编译使用 groovy 作为脚本语言的项目时,出现了一个非常奇怪的效果。设置非常简单:

我有一个可以通过 groovy 脚本配置的 java 应用程序。配置文件的解析全部由 groovy 代码处理,并生成几个类,其中包含从脚本中提取的信息,并且可供 java 应用程序使用。

配置类都实现接口(interface),以解耦 groovy 方面,以便 java 应用程序不知道它实际上与 groovy 对象通信。

因此,对于接口(interface),我唯一的依赖是从 groovy 到 java。这应该是正常情况,因为 groovy 插件默认在 compileGroovy 之前执行 compileJava

这一直有效到今天!!!

几个小时前,事情开始变得奇怪。尝试使用 gradle test 测试我的应用程序会导致错误,告诉我 groovy 类看不到 java 接口(interface)。我尝试使用 compileJavacompileGroovy 分别编译 java 和 groovy,并注意到后者只是删除了 java 任务生成的所有类文件。当使用 --info 选项运行时,我还发现了一个奇怪的输出:

Output file /home/tomas/projects/unnecessary-wizard/build/classes/main has changed.
Output file /home/tomas/projects/unnecessary-wizard/build/classes/main/de/tlongo/unneccesarywizard/java/core/Wizard.class has changed.
Output file /home/tomas/projects/unnecessary-wizard/build/classes/main/de/tlongo/unneccesarywizard/java/core/ConstructorInjector.class has changed.

为什么 groovy 任务会改变 java 类?

正如我所说,我尝试通过一个简单的展示来重现错误,其中 groovy 类也实现了 java 接口(interface),但没有成功。

这是我的 build.script,在我看来,它是朝九晚五的:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'

group = 'de.tlongo'
version = '0.3-SNAPSHOT'

repositories {
mavenLocal()
mavenCentral()
}

dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.5'
compile 'commons-configuration:commons-configuration:1.7'
compile 'ch.qos.logback:logback-classic:1.1.1'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'org.reflections:reflections:0.9.9-RC1'

testCompile 'org.hamcrest:hamcrest-all:1.3'
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile 'org.mockito:mockito-all:1.9.5'
}

知道出了什么问题吗?还是我不明白gradle如何编译此类项目的概念。

最佳答案

在 Gradle 中编译 Java 和 Groovy 源代码时,通常应将所有源代码放在“src/main/groovy”目录中,以允许交叉编译。它们可以是分开的(java in java,groovy in groovy);但是,如果存在跨语言依赖项,您可能会遇到编译问题 - 这就是您遇到的情况。

此外,作为旁注,当您应用 groovy 插件时,您不需要应用 java 插件 - groovy 插件依赖于 java 插件,因此它已经可用。

关于java - Gradle Groovy 插件似乎删除了已编译的 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com