--请注意,--对于那些认为我应该在这里“删除背景故事”的人,或者这个问题“与CodePro无关”的人,我想提到的是,CodePro对于如何在命令行中正确地启动和运行他们的Ant任务几乎没有文档。CodePro几乎是100% UI驱动的,他们的文档集中在这一点上。如果能完全回答这个问题,我相信它将成为其他开发人员(如果不是唯一的话)的完整文档之一,像我这样只想从命令行运行CodePro任务的开发人员,作为他们构建的一部分。
我想让CodePro分析的蚂蚁任务从命令行开始工作。
在阅读了文档并下载了一些示例之后,它不希望您按照在Ant中运行外部定义的任务的正常方式运行任务,这通常如下所示:
xmlns元素中定义一个<project>属性<taskdef>任务<target>元素中调用这些定义的任务使用CodePro,Ant任务依赖于许多核心Eclipse /类。如果下载它们的任何示例,您将看到编写的Windows文件演示了它们希望您如何运行其Ant任务,它们都采用以下形式:
set JAVAEXE="\Programs\jdk1.5.0_05\jre\bin\java.exe"
set ECLIPSEHOME="\Programs\eclipse_330"
set WORKSPACE="\Programs\eclipse_330_headless\headless_arbitrary_src_multi_audit\workspace"
for /f "delims= tokens=1" %%c in ('dir /B /S /OD %ECLIPSEHOME%\plugins\org.eclipse.equinox.launcher_*.jar') do set EQUINOXJAR=%%c
:run
@echo on
%JAVAEXE% -jar %EQUINOXJAR% -clean -noupdate -application org.eclipse.ant.core.antRunner -data %WORKSPACE% -verbose -file headless.xml %* >headless_out.txt 2>&1headless.xml是包含CodePro Ant目标和任务的Ant文件。
我整个上午都在努力为我的Ant目录提供必要的依赖关系,它需要它以“正常”的方式运行这些CodePro任务,但是我发现自己开始将整个plugins/目录复制到ANT_HOME/lib中!我已经恢复了这些更改,现在已经准备好接受从命令行运行Ant的这种(相当难看的)方式。
借用上面的示例,下面是我的新设置:
build.xml是我的“核心”Ant构建文件,在这里我将有一个名为run-codepro-analysis的目标。codepro-analysis.xml将定义我的所有CodePro任务(在包装器目标内部);这相当于上面批处理文件中的headless.xml。buildfile.xml#run-codepro-analysis调用<java>并运行与上面批处理文件中提供的参数完全相同的参数,但有以下例外::JAVA_HOME (指向我的JDK)、ECLIPSE_HOME和WORKSPACE_HOME;我显然想用它们来代替JAVAEXE、ECLIPSEHOME和WORKSPACE。ant -buildfile build.xml run-codepro-analysis时相同的控制台/终端,而不是headless_out.txt或其他文件。
鉴于这是一个相当复杂的命令(包含许多选项、参数,甚至嵌套的选项参数),我不太确定如何在run-codepro-analysis目标中构造run-codepro-analysis元素,但到目前为止,我有以下内容:
<target name="run-codepro-analysis">
<java fork="true" failonerror="true"
jar="${env.ECLIPSE_HOME}/plugins/org.eclipse.equinox.launcher_*.jar">
<arg line="-clean -noupdate -application org.eclipse.ant.core.antRunner -data ${env.WORKSPACE_HOME} -verbose -file codepro-analysis.xml"/>
</target>当我运行此程序时,构建失败:
无法访问jarfile /home/myuser/sandbox/workbench/eclipse/indigo-3.7/eclipse/plugins/org.eclipse.equinox.launcher_*.jar
我不确定这是因为通配符失败了,它实际上是在寻找org.eclipse.equinox.launcher_*.jar,还是<java>任务中的其他东西配置不正确。提前感谢任何人能帮我完成这份工作。就像我说过的,web上没有其他全面的文档(我可以找到)来解释如何将其作为构建的一部分来工作,特别是对于不能运行批处理文件的Linux开发人员。
发布于 2012-10-10 20:34:37
就快到了。
jar参数不能有通配符,但这可以很容易地修复,使用classname和classpath代替(可以使用fileset和通配符)。
我还建议使用单参数表单因子将命令行args传递给java任务。以后少一些惊喜
<target name="run-codepro-analysis">
<java fork="true" failonerror="true"
classname="org.eclipse.equinox.launcher.Main"
>
<arg value="-clean"/>
<arg value="-noupdate"/>
<arg value="-application"/>
<arg value="org.eclipse.ant.core.antRunner"/>
<arg value="-data"/>
<arg file="${env.WORKSPACE_HOME}"/>
<arg value="-verbose"/>
<arg value="-file"/>
<arg file="codepro-analysis.xml"/>
<classpath>
<fileset dir="${env.ECLIPSE_HOME}/plugins">
<include name="org.eclipse.equinox.launcher_*.jar"/>
</fileset>
</classpath>
</java>
</target>https://stackoverflow.com/questions/12817860
复制相似问题