2014-02-15 140 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