Gradle构建,然后忽略子项目

时间:2015-06-09 21:12:14

标签: java gradle

我在big-project/中有一个gradle项目,在big-project/lib/有一个子项目。

big-project/ big.project.Mainimport big.project.lib.Utilsbig-project/lib/gradle build子项目中定义。

当我尝试运行:lib: compileJava UP-TO-DATE :lib:processResources UP-TO-DATE :lib:classes UP-TO-DATE :lib:jar :compileJava big-project/src/main/java/big/project/Main.java:3: error: package big.project.lib not exist import big.project.lib.Utils; ^ 1 error :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Compilation failed; see the compiler error output for details. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 6.243 secs 时,会发生这种情况:

big-project/settings.gradle

由于某种原因,gradle编译子项目的代码,然后决定忽略它。 我该如何解决?

这些是我的gradle文件:

include 'lib'

big-project/build.gradle

evaluationDependsOnChildren() allprojects { apply plugin: 'java' sourceCompatibility = '1.8' version = '1.0' group = 'big.project' } apply plugin: 'war' dependencies { compile project(':lib') }

big-project/lib/build.gradle

06-09 16:33:12.625: E/AndroidRuntime(2048): FATAL EXCEPTION: main 06-09 16:33:12.625: E/AndroidRuntime(2048): Process: kh.edit_skill, PID: 2048 06-09 16:33:12.625: E/AndroidRuntime(2048): java.lang.NullPointerException 06-09 16:33:12.625: E/AndroidRuntime(2048): at kh.edit_skill.MainActivity.isEmptyS(MainActivity.java:137) 06-09 16:33:12.625: E/AndroidRuntime(2048): at kh.edit_skill.MainActivity.onClick(MainActivity.java:216) 06-09 16:33:12.625: E/AndroidRuntime(2048): at android.view.View.performClick(View.java:4438) 06-09 16:33:12.625: E/AndroidRuntime(2048): at android.view.View$PerformClick.run(View.java:18422) 06-09 16:33:12.625: E/AndroidRuntime(2048): at android.os.Handler.handleCallback(Handler.java:733) 06-09 16:33:12.625: E/AndroidRuntime(2048): at android.os.Handler.dispatchMessage(Handler.java:95) 06-09 16:33:12.625: E/AndroidRuntime(2048): at android.os.Looper.loop(Looper.java:136) 06-09 16:33:12.625: E/AndroidRuntime(2048): at android.app.ActivityThread.main(ActivityThread.java:5017) 06-09 16:33:12.625: E/AndroidRuntime(2048): at java.lang.reflect.Method.invokeNative(Native Method) 06-09 16:33:12.625: E/AndroidRuntime(2048): at java.lang.reflect.Method.invoke(Method.java:515) 06-09 16:33:12.625: E/AndroidRuntime(2048): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 06-09 16:33:12.625: E/AndroidRuntime(2048): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 06-09 16:33:12.625: E/AndroidRuntime(2048): at dalvik.system.NativeStart.main(Native Method) 为空

<小时/> 我确实研究了gradle手册:Chapter 56. Multi-project Builds,但没有任何有用的东西来自于此。

1 个答案:

答案 0 :(得分:1)

TL; DR:我的big-project/lib/src文件夹未正确设置(源代码位于错误的子目录中)。正如this answer所述,Java源代码必须位于src/main/java

感谢对这个问题的评论,我能够找到合适的地方寻找解决方案。正如所建议的,我查看了一个工作示例项目。当我使用Eclipse时,我基于flat-java-multiproject示例生成了一个新的Gradle项目。这使我能够删除build.gradle个文件作为错误的来源。

接下来,我决定检查build/项目的lib/工件,发现.jar文件中没有包含任何.class文件。这解释了我在问题中报告的编译器错误。这导致我看到所有.java来源是否在正确的位置,如上所述,他们不是。修复此问题,修复了编译错误。

整个问题在于,当我在eclipse中编写代码时,似乎找到了对lib项目类的所有引用。