2017-06-01 18 views
0

我想用java編譯一些java文件到一個jar文件。
目標是將它們添加到jar並檢查測試的依賴性。
Maven應該整合junit libary。
我也想應用某種過濾器來測試只有*Tests.java
文件build.gradle文件與src文件夾在同一個目錄中。如何使用gradle java-plugin將一些java文件構建到一個jar文件中?

我的文件結構(文件夾或文件名不能更改):

src/eu/conflicts/Conflicts.java 
src/eu/conflicts/ConflictsTests.java 
src/eu/utils/BuggyUtils.java 
src/eu/utils/BuggyUtilsTests.java 

運行gradle -b build.gradle jar後,我得到了錯誤信息:Could not find the main method

apply plugin: 'java' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile 'junit:junit:4.12' 
} 

sourceSets { 
    main { 
     conflicts { 
     srcDir = 'src/eu/conflicts' 
     } 
     utils { 
     srcDir = 'src/eu/utils' 
     } 
    } 

    test { 
     conflicts { 
     srcDir = 'src/eu/conflicts' 
     } 

     utils { 
     srcDir = 'src/eu/utils' 
     } 
    } 
} 

jar { 
    baseName = 'xy' 
    version = '0.1' 
    manifest { 
     attributes("Implementation-Title": "xy", 
       "Implementation-Version": 0.1) 
    } 
} 

回答

1

你的源集定義不正確。 Java插件僅支持源集中的源類型javaresources。每個源集可以具有任意名稱。如果您指定源集main,它將根據jar任務定製常規使用的源集。所以:

apply plugin: 'java' 

sourceSets { 
    main { 
    java { 
     srcDir 'src' 
     exclude '**/*Tests.java' 
    } 
    } 

    test { 
    java { 
     srcDir 'src' 
     include '**/*Tests.java' 
    } 
    } 
} 
1

你的源臺似乎是不正確的,你如果你不關心正在構建的工件,就不需要修改jar任務。

  • 運行所有測試和編譯的文件,你只需要運行build任務,這取決於assemblecheck依賴於其他任務,如testcompile等。要使用它,你需要apply plugin: 'java'

  • Gradle將構建一個單獨的構件(如果​​您使用構建任務)編譯所有你想要的,默認情況下將你的主要源代碼包裝成一個沒有測試源的jar包。

  • Gradle將運行通過註釋發現的測試源中的所有測試(使用構建任務中捆綁的測試任務)。

  • 你可以修改一切,在你的腳本中使用SourceSets {}指向非默認結構

嘗試也許這:

sourceSets { 
    main.java{ 
     srcDirs = ['src/eu/conflicts', 'src/eu/utils'] 
     include '**/*.java' 
    } 

    test.java{ 
     srcDirs = ['src/eu/conflicts', 'src/eu/utils'] 
     include '**/*Tests.java' 
    } 
} 
+0

我想編譯所有的java文件並測試它們,然後將它們構建到一個jar文件。 – user3741086

+0

如果你運行gradle構建?這是它應該做的。 – LazerBanana

+0

我收到了同樣的錯誤信息,當我嘗試使用版本 *出錯了: 評估根項目'2017ProjectTeam5_1'時發生問題。 >在根項目'xy'上無法找到參數[_01356151_bkxl5o60k8o88kpv3g258s1b1 $ _run_closure3 $ _closure5 @ 53cf9c99]參數的方法main()。 – user3741086

相關問題