我有一个包含多个包的gradle项目.构建之后,每个包都在build/libs中生成jar文件.外部jar依赖项被拉入〜/ .gradle.我现在想从命令行本地运行具有适当类路径的服务.为此,我正在编写一个构造类路径的脚本.问题是脚本无法理解所有外部依赖项,因此无法构造类路径.有没有办法让gradle帮忙解决这个问题?理想情况下,我想在构建结束时将所有依赖项转储到一个文件夹中.
Tom*_*son 12
首先,如果可以的话,我建议使用应用程序插件,因为它已经处理了这个问题.
如果要自己将类路径转储到文件中,最简单的方法是:
task writeClasspath << {
buildDir.mkdirs()
new File(buildDir, "classpath.txt").text = configurations.runtime.asPath + "\n"
}
Run Code Online (Sandbox Code Playgroud)
如果要将类路径上的所有库实际复制到目录中,可以执行以下操作:
task copyDependencies(type: Copy) {
from configurations.runtime
into new File(buildDir, "dependencies")
}
Run Code Online (Sandbox Code Playgroud)
您可以在构建脚本中尝试类似的操作:
// 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(':')
}
Run Code Online (Sandbox Code Playgroud)