Gradle compileJava 无法从源文件中找到符号
我是Gradle的新手,所以我有可能在这里错过了一些明显的东西。我正在努力使用Gradle来自动化构建我们的项目。我已经解决了其中的大多数问题,但有一个问题给我带来了无休止的麻烦。由于这是针对我的公司,我不能分享任何真实的代码,但我会尽我所能提供逼真的伪代码。
我正在尝试编译一个具有弹性前端和java后端的Web应用程序。现在,我只专注于创建一个包含java的.war文件,然后我将进入flex编译。当我运行以下 build.gradle 脚本时,它给了我无数的“找不到符号”错误。
apply plugin: 'eclipse'
apply plugin: 'war'
sourceCompatibility = 1.6
repositories {
mavenCentral()
}
sourceSets.main.java.srcDir 'src'
sourceSets.main.resources.srcDir 'src'
webAppDirName = "WebContent"
war.archiveName "Gradle_test.war"
dependencies {
compile fileTree(dir: 'WebContent/WEB-INF/lib', include: '*.jar')
providedCompile 'org.apache.tomcat:catalina:6.0.13'
providedCompile 'org.apache.tomcat:dbcp:6.0.13'
}
发生的错误示例(带有伪造的包和类名):
/Users/user/Documents/eclipse/ProjectName/src/com/companyName/teamName/projectName/core/release/subProjectName/projectVersion/RenamedObject.java:385: cannot find symbol
symbol : class OtherObject
location: class com.companyName.teamName.projectName.core.release.subProjectName.projectVersion.RenamedObject
public class InnerClass extends OtherObject implements Indexable<String>, Serializable {
类 InnerClass 与 RenamedObject 类一起在 RenamedObject.java 文件中声明。它找不到的符号“其他对象”不是来自.jar。它是存储在 处的源文件。该对象在重命名对象的顶部导入.java并且可以通过 eclipse 构建和运行,而无需任何特殊设置。这些错误发生在从终端执行后的 :compileJava 任务期间。/Users/user/Documents/eclipse/ProjectName/src/com/companyName/teamName/projectName/core/release/subProjectName/projectVersion/superTypes/OtherObject.java
gradle war
有什么理由让 Gradle 在处理从这样的子包导入源代码时遇到问题吗?我只是做错了什么吗?如果有更多信息可以帮助我,请告诉我,如果可以的话,我会提供。
编辑:我让它工作。所有 130 个错误都通过一次更改得到解决。如果我在扩展中将完全限定的包名称添加到 OtherObject 中,那么它看起来像这样:
public class InnerClass extends com.companyName.teamName.projectName.core.release.subProjectName.projectVersion.superTypes.OtherObject implements Indexable<String>, Serializable {
这一个变化使一切都有效,但我仍然不明白原因。这不是项目中对 OtherObject 的唯一引用,也不是内部类扩展另一个源包中定义的类的唯一位置。