请注意 - 任何人认为我应该在这里“删除背景故事”,或者说这个问题“与CodePro无关”,我想提到CodePro几乎没有关于如何从命令行正确启动Ant任务的文档。 CodePro几乎100%由用户界面驱动,他们的文档重点关注。如果这个问题能够得到完全解答,我相信它将成为像我这样的其他开发者的少数(如果不是唯一的)完整文档之一,他们只是想从命令行运行CodePro任务,作为他们的一部分建立。在Ant任务中运行“无头Eclipse”
我试图从命令行得到CodePro AnalyTix's Ant tasks。
阅读文档,并下载了一些例子之后,它不会让你运行的任务,就像你在运行Ant的,通常看起来外部定义任务的正常方式:
- 定义一个
xmlns
属性根<project>
元素第三方蚂蚁罐内 - 定义与
<taskdef>
声明1+任务 - 调用来自
<target>
元素中所定义的那些任务
使用CodePro,Ant任务依赖于许多核心Eclipse Jar /类。如果你下载任何他们examples的,你会看到,展示他们是如何想你运行的Ant任务写入Windows批处理文件,他们都采取以下形式:
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>&1
的headless.xml
是Ant文件它具有CodePro Ant目标和任务。
我整个上午都在试图用它需要运行这些任务的CodePro“正常”的方式必要的依赖提供我的Ant lib目录,但发现自己开始对整个Eclipse plugins/
目录复制到ANT_HOME/lib
!我已经恢复了这些更改,现在准备接受从命令行运行Ant的这种(相当丑陋的)方式。
从上面的例子中借用,这里是我的新格局:
build.xml
是我的“芯” Ant构建,并在那里我将有一个名为目标run-codepro-analysis
codepro-analysis.xml
是所有我的CodePro任务将被定义(在包装目标中);这相当于headless.xml
以上- 批处理文件我想
buildfile.xml#run-codepro-analysis
打电话<java>
和运行完全相同的参数在上面的批处理文件提供,但下列情况除外:- 巧合的是,我已经有三个env vars在我的机器上安装:
JAVA_HOME
(指向我的JDK),ECLIPSE_HOME
和WORKSPACE_HOME
;我显然想用这些来代替JAVAEXE
,ECLIPSEHOME
和WORKSPACE
- 我希望将输出重定向到相同的控制台/终端,因为我正在运行
ant -buildfile build.xml run-codepro-analysis
; 不headless_out.txt
或其他一些文件
- 巧合的是,我已经有三个env vars在我的机器上安装:
看到,这是一个相当复杂的命令(有许多选项,参数,甚至嵌套的参数选项),我真的不知道如何构建在run-codepro-analysis
目标内<java>
元素,但这里是我到目前为止有:
<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>
当我运行此,构建失败:
【JAVA]无法访问jar文件/home/myuser/sandbox/workbench/eclipse/indigo-3.7/eclipse/plugins/org.eclipse.equinox.launcher_*.jar
我不知道如果这是因为通配符失败,并且它实际上正在查找org.eclipse.equinox.launcher_*.jar
,或者我的<java>
任务中的其他内容配置不正确。在此先感谢任何能够帮助我实现这一目标的人。就像我说的那样,在网络上没有其他全面的文档(无论如何我都能找到),这些文档解释了如何在构建过程中实现这一目标,特别是对于无法运行BATCH文件的Linux开发人员。
忘了提 - 这是一个非常* *类似的问题[本](http://stackoverflow.com/questions/5632930/how-to-execute-google-codepro-analytix然而,在这个问题中,用户正试图直接从BATCH文件运行'headless.xml'。在这里,我试图从另一个构建文件运行(相当于)'headless.xml',以便访问由'AntClassLoader'提供的Eclipse/Equinox类路径。 – IAmYourFaja