我是Groovy/Gradle newb,试图将构建系统从ant和shell文件切换到gradle,在我的代码中运行一个名为Pack.jar的Java程序时遇到了困难。从Exec到JavaExec,我已经尝试过各种各样的东西,但没有运气。以下是我最近一次失败的尝试:
configurations {
pack
}
apply plugin: 'java'
apply plugin: 'maven'
sourceCompatibility = 1.7
version = '1.0'
repositories {
mavenCentral()
}
ant.importBuild('build.xml')
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}
task pack(type: JavaExec) {
classpath = configurations.pack
workingDir = '~/Dropbox/git/BuildGraph/dist'
main = 'pack.Main'
args '-mainjar'
args 'dist/buildGraph.jar'
args '-directory'
args '../lib'
args '-destjar'
args 'buildGraph-pack.jar'
}我正在尝试重新创建第二个命令行序列:
$java -jar pack.jar
Usage 1: java -jar pack.jar -mainjar p2pmatrixmult.jar -libjar gson.jar -libjar hello.jar -destjar p2pmm_packed.jar
Usage 2: java -jar pack.jar -mainjar p2pmatrixmult.jar -directory jars -destjar p2pmm_packed.jar任何帮助都将不胜感激。
发布于 2015-03-10 08:16:53
首先,没有为pack配置添加依赖项,这是所需的配置吗?
其次,您需要将参数作为一个列表传递给JavaExec,目前只有一个参数:'buildGraph-pack.jar‘。
task pack(type: JavaExec) {
classpath = configurations.pack
workingDir = '~/Dropbox/git/BuildGraph/dist'
main = 'pack.Main'
args '-mainjar', 'dist/buildGraph.jar', '-directory', '../lib', '-destjar', 'buildGraph-pack.jar'
}更新
好的,我下载了这个项目。然后..。首先,您缺乏对gradle工作原理的基本理解。请阅读gradle教程以了解基本概念。
第一步:
当您运行gradle pack -s时,您将查看具有以下行(可能不同)的堆栈跟踪:
由:"/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java“:无法运行程序java.io.IOException引起(在目录"/private/tmp/BuildGraph/~/Dropbox/git/BuildGraph/dist"):error=2中,没有这样的文件或目录)
因此,第一步是修改这一行:
workingDir = '~/Dropbox/git/BuildGraph/dist'以下各点:
workingDir = project.file('dist')同样,gradle pack -s和错误是不同的。时间:
第二步
一开始看上去很不清楚。现在的想法是添加流处理以获取问题--在pack任务中添加以下行:
def os = new FileOutputStream(project.file('stdout'))
standardOutput = os
def es = new FileOutputStream(project.file('stderr'))
errorOutput = es查看stderr后,会发生以下情况:
错误:找不到或加载主类pack.Main
第三步
您确实添加了pack配置,但没有对其定义任何依赖项,dependencies块应该是:
dependencies {
pack files('pack.jar')
}再说一遍gradle pack -s,现在也不例外。但是stderr文件中有一些内容:
java.io.FileInputStream.(FileInputStream.java:131) at java.io.FileInputStream.(FileInputStream.java:87) at pack.Pack.addJar(Pack.java:43) at pack.Pack.run(Pack.java:31) at pack.Main.runOnSpecifiedFiles(Main.java:71) at pack.Main.runOnDirectory(主方法)( .java:80)在pack.Main.run(Main.java:31) at pack.Main.main(Main.java:18)
第四步
将workingDir更改为:
workingDir = project.rootDir再次声明:gradle pack -s和stderr内容是:
pack.Main.findJarFilesInDirectory(Main.java:85) at pack.Main.runOnDirectory(Main.java:79) at pack.Main.run(Main.java:31) at pack.Main.main(Main.java:18)
这就是我的角色结束的地方。
https://stackoverflow.com/questions/28957436
复制相似问题