2015-05-03 31 views
2

我正在嘗試使用gradle(版本2.3)而不是ant編譯this project如何將資源目錄(而不是單個文件)包含到編譯類路徑中?

有兩個子模塊; cachedb編譯沒有問題;至於另一個,NBStudioCore,我做了充分的練習,使用antlr插件等具有正確的依賴關係...它編譯,但註釋處理器阻礙。

全部分支:https://github.com/fge/NBStudio/tree/topic/gradle

從原來的區別:

  • 重命名SRC爲src /主/ JAVA;
  • 所有非java文件放入src/main/resources。

子模塊NBStudioCore的讀取的build.gradle:

apply(plugin: "antlr"); 

repositories { 
    mavenCentral(); 
    maven { 
     url "http://bits.netbeans.org/maven2"; 
    } 
} 

dependencies { 
    antlr(group: "org.antlr", name: "antlr4", version: "4.5"); 

    compile project(":cachedb"); 

    compile(group: "org.netbeans.api", name: "org-openide-util", 
     version: "RELEASE80"); 
    compile(group: "org.netbeans.api", name: "org-netbeans-api-search", 
     version: "RELEASE80"); 
    compile(group: "org.netbeans.api", name: "org-netbeans-modules-lexer", 
     version: "RELEASE80"); 
    compile(group: "org.netbeans.api", name: "org-netbeans-modules-parsing-api", 
     version: "RELEASE80"); 
    compile(group: "org.netbeans.api", name: "org-netbeans-modules-editor", 
     version: "RELEASE80"); 
    compile(group: "org.netbeans.api", 
     name: "org-netbeans-modules-editor-completion", version: "RELEASE80"); 
    compile(group: "org.netbeans.api", 
     name: "org-netbeans-spi-editor-hints", version: "RELEASE80"); 
    compile(group: "org.netbeans.api", name: "org-netbeans-core-multiview", 
     version: "RELEASE80"); 
    compile(group: "org.netbeans.api", name: "org-netbeans-modules-csl-api", 
     version: "RELEASE80"); 
} 

而且compileJava任務輸出(從目錄NBStudioCore內的../gradlew compileJava運行)是這樣的:

:NBStudioCore:clean 
:NBStudioCore:generateGrammarSource 
:cachedb:compileJava UP-TO-DATE 
:cachedb:processResources UP-TO-DATE 
:cachedb:classes UP-TO-DATE 
:cachedb:jar UP-TO-DATE 
:NBStudioCore:compileJava 
[...] 
/home/fge/work/src/NBStudio/NBStudioCore/src/main/java/org/nbstudio/core/cls/clsVisualElement.java:19: error: Cannot find resource org/nbstudio/core/cls/class.png 
@MultiViewElement.Registration(
^ 
[...] 
/home/fge/work/src/NBStudio/NBStudioCore/src/main/java/org/nbstudio/core/OpenFileAction.java:30: error: Cannot find resource org/nbstudio/Bundle.properties 
public class OpenFileAction implements ActionListener { 
    ^
[...] 
/home/fge/work/src/NBStudio/NBStudioCore/src/main/java/org/nbstudio/core/bas/package-info.java:5: error: Cannot find resource org/nbstudio/core/bas/bas.gif 
@TemplateRegistration(folder = "Cache", content = "basTemplate.bas", displayName = "BAS Routine") 
^ 
[...] 
/home/fge/work/src/NBStudio/NBStudioCore/src/main/java/org/nbstudio/core/cls/newFileWizard.java:23: error: Cannot find resource org/nbstudio/core/cls/clsTemplate.cls 
@TemplateRegistration(folder = "Cache", content = "clsTemplate.cls", displayName = "Cache Class") 
^ 
[...] 
warning: layer file Editors/text/isc-cls/MultiView/org-nbstudio-core-cls-clsVisualElement.instance was never written 
warning: layer file Actions/System/org-netbeans-modules-openfile-OpenFileAction.instance was never written 
warning: layer file Loaders/text/isc-bas/Factories/org-nbstudio-core-bas-basDataObject.instance was never written 
warning: layer file Templates/Cache/clsTemplate.cls was never written 
4 errors 
36 warnings 
FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':NBStudioCore: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: 7.121 secs 

如果我啓動--debug我看到編譯類路徑不包含資源目錄。但在這裏我需要它。

我試圖和該行添加到的build.gradle:

dependencies { 
    // .... 
    compile fileTree("src/main/resources"); 

,但它增加了每一個人文件編譯的類路徑是不是我想要的......我想只有目錄。

我試圖實現這一點,超過半天沒有任何成功!我怎麼做?

+0

http://stackoverflow.com/questions/22768920/is-there-a-way-to-add-classpath-directories-for-dependencies-on-gradle – guai

回答

0

您可以手動控制源集的類路徑。以下是基於我有類似的情況:

sourceSets { 
    main { 
     compileClasspath = configurations.compile.plus file("src/main/resources") 
    } 
} 

這可能工作。

相關問題