2

我正在使用以下一堆软件:

  1. 蚂蚁 1.7.1
  2. 日食太阳神
  3. Java 1.6
  4. 阿帕奇节俭 0.8.0

我正在使用 Thrift 使用以下代码块在 Ant 中生成 java 源代码:

<exec executable="thrift-0.8.0.exe" osfamily="windows">
    <arg value="-out" />
    <arg value="java/src" />
    <arg value="--gen" />
    <arg value="java" />
    <arg file="Sample.thrift" />
</exec>

所以,现在我想add将生成的src文件夹自动添加到classpath项目的文件夹中in Eclipse using Ant,这样shown as a source folder当我在 Eclipse 中打开项目时。

注意:.classpath我知道文件中存在项目的类路径,adding a classpathentry它可以解决我的问题。但我希望 Eclipse 这样做,而不是我在 .classpath 文件中手动进行。

此外,我还查看了Ant-Eclipse 项目,发现了一个 Ant 任务来创建一个新的 Eclipse Java 项目并将其src文件夹显示为源文件夹。但我不想依赖外部库。

<project name="test" default="eclipse" basedir=".">
    <target name="eclipse">
        <taskdef name="eclipse" classname="prantl.ant.eclipse.EclipseTask" />
        <eclipse>
            <project />
            <classpath>
                <source path="src" />
                <output path="bin" />
            </classpath>
        </eclipse>
    </target>
</project>

有没有办法在 Eclipse 中已经存在的 Ant 库中做到这一点?

非常感谢!

4

2 回答 2

1

eclipse .classpath 文件是一个 XML 文档,因此在其中添加源文件夹涉及编辑 XML。不幸的是,Ant 没有任何内置的工具来以任何有意义的方式操作 XML。我自己使用xmltask来编辑 .classpath 和 .project 文件,但这是您说您并不真正想要的外部库。

然而,一切并没有丢失——Ant 支持运行脚本,包括将 XML 视为一等公民的 Groovy。我希望我可以说我有足够的 Groovy 经验,可以为您提供比一些链接更多的东西,但是通过调用appendNode().

于 2013-02-04T16:55:44.517 回答
0

如果您真的不想依赖任何外部的东西,那么您可以考虑使用 XSLT 样式表来编辑.classpath文件(即 XML)。

添加-dir.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:param name="pathToAdd" />

  <xsl:strip-space elements="*" />
  <xsl:output method="xml" indent="yes" />

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="classpath">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" />
      <!-- don't add a 2nd copy of the classpathentry if one already exists -->
      <xsl:if test="not(classpathentry[@kind = 'src'][@path = $pathToAdd])">
        <classpathentry kind="src" path="{$pathToAdd}" />
      </xsl:if>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

构建.xml

<xslt in=".classpath" out=".classpath.edited" style="add-dir.xsl">
  <param name="pathToAdd" expression="java/src" />
</xslt>
<move file=".classpath.edited" tofile=".classpath" overwrite="yes" />
于 2013-02-04T17:23:17.013 回答