首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ant任务中运行“无头Eclipse”

在Ant任务中运行“无头Eclipse”
EN

Stack Overflow用户
提问于 2012-10-10 11:05:07
回答 1查看 3.1K关注 0票数 2

--请注意,--对于那些认为我应该在这里“删除背景故事”的人,或者这个问题“与CodePro无关”的人,我想提到的是,CodePro对于如何在命令行中正确地启动和运行他们的Ant任务几乎没有文档。CodePro几乎是100% UI驱动的,他们的文档集中在这一点上。如果能完全回答这个问题,我相信它将成为其他开发人员(如果不是唯一的话)的完整文档之一,像我这样只想从命令行运行CodePro任务的开发人员,作为他们构建的一部分。

我想让CodePro分析的蚂蚁任务从命令行开始工作。

在阅读了文档并下载了一些示例之后,它不希望您按照在Ant中运行外部定义的任务的正常方式运行任务,这通常如下所示:

  1. 在第三方Ant jar的根xmlns元素中定义一个<project>属性
  2. 使用1+声明定义<taskdef>任务
  3. <target>元素中调用这些定义的任务

使用CodePro,Ant任务依赖于许多核心Eclipse /类。如果下载它们的任何示例,您将看到编写的Windows文件演示了它们希望您如何运行其Ant任务,它们都采用以下形式:

代码语言:javascript
复制
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是包含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>并运行与上面批处理文件中提供的参数完全相同的参数,但有以下例外:
    • 巧合的是,我已经在我的机器上安装了三个env:JAVA_HOME (指向我的JDK)、ECLIPSE_HOMEWORKSPACE_HOME;我显然想用它们来代替JAVAEXEECLIPSEHOMEWORKSPACE
    • 我希望输出重定向到与运行ant -buildfile build.xml run-codepro-analysis时相同的控制台/终端,而不是headless_out.txt或其他文件。

鉴于这是一个相当复杂的命令(包含许多选项、参数,甚至嵌套的选项参数),我不太确定如何在run-codepro-analysis目标中构造run-codepro-analysis元素,但到目前为止,我有以下内容:

代码语言:javascript
复制
<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开发人员。

EN

回答 1

Stack Overflow用户

发布于 2012-10-10 20:34:37

就快到了。

jar参数不能有通配符,但这可以很容易地修复,使用classnameclasspath代替(可以使用fileset和通配符)。

我还建议使用单参数表单因子将命令行args传递给java任务。以后少一些惊喜

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12817860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档