当maven通过antrun执行此java代码时,我得到可怕的错误=206,文件名或扩展名太长
<java classname="com.me.api" failonerror="true" fork="true" maxmemory="128m" output="${wsdlFile}.out">
<arg value="${className}" />
<arg value="${name}" />
<arg value="${wsdlFile}" />
<classpath>
<path refid="maven.test.classpath" />
</classpath>
字符串
5条答案
按热度按时间s1ag04yj1#
由于本地maven存储库的结构和位置,Maven会创建很长的类路径。我们需要使用一个pathing jar。
字符串
uidvcgyl2#
扩展@user4386022提供的答案:您可以定义(从Ant 1.8开始)这个宏,如果您在构建过程中的不同地方遇到相同的问题,它可以帮助您(并且您不能只是复制粘贴相同的片段,因为Ant不允许重新定义属性,所以您将得到一个错误,说“manifest.classpath”已经定义。
字符串
要在目标或任务中使用宏,只需像这样使用它:
型
ego6inou3#
如果使用Ant1.7或更高版本,则可以利用manifestclasspath任务生成清单文件,然后将其包含在jar中,以便在javac类路径上使用
字符串
jc3wubiy4#
通过从build.xml文件中的javac目标中删除
fork="true"
修复了问题。如果构建过程中必须使用forking,请参考上面的解决方案。8nuwlpux5#
Java提供了一个简单的机制来永久解决这个问题,它被称为
@argfile
。这个想法很简单:1.与将所有参数作为命令行参数附加到
java
命令不同,您可以将它们写入一个简单的文本文件,其中每个参数位于单独的行中,例如使用echo
任务。1.然后指定该文本文件的位置,如下所示:
java @myArguments.txt
然后Java读取文本文件,并将在其中找到的任何内容作为参数展开。由于您使用Ant,因此您的配置可能如下所示:
字符串
一些补充说明:


是CRLF
的XML编码版本,即Windows换行符。型