2017-06-20 98 views
0

我使用“gradle init”将工作的Maven项目转换为Gradle。我收到的包不存在错误。我不知道如何调试这个错误。“gradle init”(v4.0)生成build.gradle找不到包

$ ./gradlew build 
Starting a Gradle Daemon (subsequent builds will be faster) 

> Task :drill-logical:compileJava 
warning: [options] bootstrap class path not set in conjunction with -source 1.7 
/home/drill/logical/src/main/java/org/apache/drill/common/expression/LogicalExpression.java:26: error: package org.apache.drill.common.expression.parser does not exist 
import org.apache.drill.common.expression.parser.ExprLexer; 
               ^
/home/drill/logical/src/main/java/org/apache/drill/common/expression/LogicalExpression.java:27: error: package org.apache.drill.common.expression.parser does not exist 
import org.apache.drill.common.expression.parser.ExprParser; 
               ^
/home/drill/logical/src/main/java/org/apache/drill/common/expression/LogicalExpression.java:28: error: package org.apache.drill.common.expression.parser.ExprParser does not exist 
import org.apache.drill.common.expression.parser.ExprParser.parse_return; 
                 ^
/home/drill/logical/src/main/java/org/apache/drill/common/expression/SchemaPath.java:29: error: package org.apache.drill.common.expression.parser does not exist 
import org.apache.drill.common.expression.parser.ExprLexer; 
               ^
/home/drill/logical/src/main/java/org/apache/drill/common/expression/SchemaPath.java:30: error: package org.apache.drill.common.expression.parser does not exist 
import org.apache.drill.common.expression.parser.ExprParser; 
               ^
/home/drill/logical/src/main/java/org/apache/drill/common/expression/SchemaPath.java:31: error: package org.apache.drill.common.expression.parser.ExprParser does not exist 
import org.apache.drill.common.expression.parser.ExprParser.parse_return; 
                 ^

钻/逻辑目录的build.gradle:

$ cat build.gradle 

description = 'Logical Plan, Base expressions' 
dependencies { 
    compile project(':drill-protocol') 
    compile project(':drill-common') 
    compile(group: 'org.apache.calcite', name: 'calcite-core', version:'1.4.0-drill-r21') { 
     exclude(module: 'jgrapht-jdk1.5') 
     exclude(module: 'commons-logging') 
     exclude(module: 'jackson-annotations') 
     exclude(module: 'jackson-core') 
     exclude(module: 'jackson-databind') 
    } 

    compile group: 'com.typesafe', name: 'config', version:'1.0.0' 
    compile group: 'org.apache.commons', name: 'commons-lang3', version:'3.1' 
    compile group: 'org.msgpack', name: 'msgpack', version:'0.6.6' 
    compile group: 'org.reflections', name: 'reflections', version:'0.9.8' 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version:'2.7.1' 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version:'2.7.1' 
    compile group: 'com.codahale.metrics', name: 'metrics-core', version:'3.0.1' 
    compile group: 'com.codahale.metrics', name: 'metrics-servlets', version:'3.0.1' 
    compile group: 'org.antlr', name: 'antlr-runtime', version:'3.4' 
    compile group: 'joda-time', name: 'joda-time', version:'2.9' 

    testCompile project(':drill-common') 
} 

task packageTests(type: Jar) { 
    from sourceSets.test.output 
    classifier = 'tests' 
} 

我是不是看错了的build.gradle文件?最上面的build.gradle列出了与它的pom.xml一对一匹配的依赖和存储库。

我该找什么?

回答

1

您缺少的类是由ANTLR生成的。您的回购库中有一个ANTLR语法文件,从中可以生成这些文件。像Maven构建中使用的大多数插件一样,这不会自动传输到Gradle,而必须手动完成。使用内置的Gradle ANTLR插件从语法文件生成源代码。

+0

添加antlr插件,“generateGrammarSource”并将java编译的依赖项设置为generateGrammarSource并不会改变错误。 – user2569618

+0

我不认为除了应用插件外你还需要任何东西。我认为像依赖关系等其他一切应该自动设置。如果它仍然不起作用,请单独提供当前的构建脚本和执行输出,分别用'-i'和'-d',或者直接告诉我可以在哪里获得当前钻取状态。 – Vampire

+0

使用-i选项,我看到问题。尽管我已经设置了源码目录“logical/src/main/antlr3”,但Gradle坚持使用“logical/src/main/antlr”。从“antlr3”到“antlr”的符号链接解决了这个问题。 – user2569618