2014-02-15 181 views
0

我對Gradle很陌生,也是我使用它的主要原因,因爲我需要解決我編譯的jar的依賴性問題。Gradle依賴不包含在罐子裏

這裏是我的build.gradle文件:

apply plugin: 'java' 
apply plugin: 'eclipse' 

version = '0.9' 

jar { 
    manifest { 
     attributes 'Main-Class': 'wd.nlp.FileImport', 'Implementation-Title': 'WD\ 
NLP', 'Implementation-Version': version 
    } 
} 

repositories { 
    flatDir(dirs: 'lib') 
} 

dependencies{ 
    compile 'mallet:mallet:2.0.7' 
} 

我的Java文件都依賴於一種稱爲Mallet第三方庫。這裏是我的文件夾結構:

|---1.10 
|-----taskArtifacts 
|-build 
|---classes 
|-----main 
|-------wd 
|---------nlp 
|---dependency-cache 
|---libs 
|---tmp 
|-----jar 
|-lib 
|-src 
|---main 
|-----java 
|-------wd 
|---------nlp 
|-----resources 

我放在裏面Mallet-2.0.7.jarlib頂部文件夾下。然後我用gradle build命令,並嘗試運行我的課:

java -classpath build/libs/JavaClassifier-0.9.jar wd.nlp.FileImport -train ...

然後有人告訴我:

Exception in thread "main" java.lang.NoClassDefFoundError: cc/mallet/pipe/Pipe 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531) 

Mallet庫的路徑是cc.mallet.* ......現在我不知道是什麼做...請幫助!

回答

3

不包括依賴關係,因爲您不會創建項目的分佈。在Maven中它被稱爲程序集。

如果你直接從命令行調用你的應用程序,它不是Gradle的問題。

無論如何,有一個Gradle插件可以創建一個發行版並添加shell腳本來執行您的應用程序。

所以,當您將以下行添加到gradle腳本。

apply plugin: 'application' 

您將獲得一些創建分配的新任務。

+0

謝謝!它確實把我帶到了下一步......我能夠通過Gradle「運行」它。那麼,這發生了:'進程'命令'/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java''以非零退出值1'結束這是關於我的程序嗎?我的Java路徑是正確的。我在我的控制檯上運行上面的行,它是'java'命令的位置。 –

+0

如果我忘了提及...我的程序主類確實帶有一些命令行參數。 –

+0

你可以通過添加'run {args'your','arguments'}'來添加參數到我的build.gradle – Aurel