Gradle build不添加所有"私有"图书馆

时间:2017-01-10 14:40:29

标签: java eclipse gradle dependencies

我有一个我正在尝试构建的Java项目,我最近移动到gradle以便能够更快,更轻松地管理依赖项。

我正在尝试使用gradle build,结果如下:

C:\whatever\>gradle build

:compileJava
:processResources UP-TO-DATE
:classes
:jar
:startScripts
:distTar
:distZip
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 1.75 secs

给我带来问题的图书馆是我在本地添加的图书馆:

repositories {
    flatDir {
       dirs 'libraries'
    }
}


dependencies {
    compile name: 'jfxwrapper'
}

这不是我添加到项目中的唯一库,但它是我自己构建的唯一库。

当我执行gradle build(或gradlew build时,它似乎完全相同),它在build/libs/*.jar中给了我一个.jar,然后我尝试执行此.jar它抛出了这个异常:

  

引起:java.lang.ClassNotFoundException:jfxwrapper.JFXWrapperScene

JFXWrapperScene是jfxwrapper.jar内的一个类。我在将它添加到eclipse项目路径之前使用过这个库并且它工作正常,但由于某种原因,gradle似乎无法找到它。

任何解释?知道为什么会发生这种情况以及如何解决这个问题吗?

感谢您的耐心等待。

更新:我发现问题是我没有将库添加到.jar中,这段代码将所有引用的库添加到.jar中:

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'MyTitle',
        'Implementation-Version': '1.1.1',
        'Main-Class': 'Main'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}

这会使用gradle fatJar添加所有依赖项,但项目仍然无效,现在说:

  

应用程序启动方法中的异常

我知道我在start方法中没有异常,因为如果我使用Eclipse导出它,我可以运行相同的代码。

有什么建议吗?我开始相信切换到gradle是一个很大的错误,我可能需要继续使用Eclipse导出,它不是那么酷或快,但它确实有效。

1 个答案:

答案 0 :(得分:0)

我刚刚找到解决方案:

编译基于JavaFX的程序时,需要指定资源的位置(* .css,* .fxml,images ....),在我的例子中,这段代码有效:

sourceSets.main.resources.srcDir 'pathToDirectory'
//For exmaple, in my case: 'src/main/java'