shell – 任务抛出错误= 7:参数列表太长
发布时间:2020-12-15 22:36:38 所属栏目:安全 来源:网络整理
导读:我有一个Ant的build.xml文件,它在我的机器(Ubuntu)上执行没有问题,但是抛出以下错误: /var/lib/hudson/workspace/myproject/build.xml:254: Error running /var/lib/hudson/tools/java_6/bin/javac compilerat org.apache.tools.ant.taskdefs.compilers.Def
我有一个Ant的build.xml文件,它在我的机器(Ubuntu)上执行没有问题,但是抛出以下错误:
/var/lib/hudson/workspace/myproject/build.xml:254: Error running /var/lib/hudson/tools/java_6/bin/javac compiler at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:525) (...) Caused by: java.io.IOException: Cannot run program "/var/lib/hudson/tools/java_6/bin/javac": java.io.IOException: error=7,Argument list too long at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) at java.lang.Runtime.exec(Runtime.java:593) at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:862) at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:481) at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:495) at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:522) ... 19 more Caused by: java.io.IOException: java.io.IOException: error=7,Argument list too long at java.lang.UNIXProcess.<init>(UNIXProcess.java:148) at java.lang.ProcessImpl.start(ProcessImpl.java:65) at java.lang.ProcessBuilder.start(ProcessBuilder.java:453) ... 24 more 参数列表相当大,实际上包含WEB-INF / lib中的所有jar文件,长度为231650个字符! 解决方法
在build.xml中使用
apply 作为
fileset ,例如:
<?xml version="1.0" encoding="UTF-8"?> <project default="build"> <fileset id="myfiles" dir="${basedir}"> <include name="**/*.java"/> <exclude name="**/Resources/**"/> <modified> <param name="cache.cachefile" value="${basedir}/cache.${project}.fileset.myfiles.properties"/> </modified> </fileset> <target name="execute-some-command"> <apply executable="javac" dir="${basedir}" failonerror="true"> <fileset refid="myfiles"/> </apply> </target> </project> 默认情况下,该命令将针对每个文件执行一次. 如果你只需要使用parallel来运行命令一次,那么使用maxparallel来限制并行数量,一次最多传递这么多源文件(例如设置为1000,每次运行传递一千个文件).例如: <apply executable="javac" parallel="true" maxparallel="1000" dir="${basedir}"> <fileset refid="myfiles"/> </apply> 要查看总共有多少文件,请检查缓存文件的内容(在上面的示例中查找cache.cachefile). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |