提问者:小点点

如何为Gradle项目生成类路径?


我有一个包含多个包的gradle项目。构建后,每个包都会在build/libs中生成其jar文件。外部jar依赖项被拉到~/. gradle中。我现在想使用适当的类路径从命令行本地运行服务。为此,我正在编写一个构造类路径的脚本。问题是脚本不理解所有外部依赖项,因此无法构造类路径。有没有一种方法让gradle来帮助解决这个问题?理想情况下,我想在构建结束时将所有依赖项转储到一个文件夹中。


共2个答案

匿名用户

首先,如果可以的话,我建议使用应用程序插件,因为它已经处理了这个问题。

如果您想自己将类路径转储到文件中,最简单的方法如下:

task writeClasspath << {
    buildDir.mkdirs()
    new File(buildDir, "classpath.txt").text = configurations.runtime.asPath + "\n"
}

如果您想实际将类路径上的所有库复制到一个目录中,您可以这样做:

task copyDependencies(type: Copy) {
    from configurations.runtime
    into new File(buildDir, "dependencies")
}

匿名用户

您可以在构建脚本中尝试这样的操作:

// add an action to the build task that creates a startup shell script
build << {
    File script = file('start.sh')

    script.withPrintWriter {
        it.println '#!/bin/sh'
        it.println "java -cp ${getRuntimeClasspath()} com.example.Main \"\$@\""
    }

    // make it executable
    ant.chmod(file: script.absolutePath, perm: 'u+x')
}

String getRuntimeClasspath() {
    sourceSets.main.runtimeClasspath.collect { it.absolutePath }.join(':')
}