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>

そこで、 Eclipse でプロジェクトを開いたときにadd、生成されたフォルダーsrcclasspathプロジェクトの に自動的に配置したいと考えています。in Eclipse using Antshown as a source folder

注:.classpathプロジェクトのクラスパスがファイルに存在し、adding a classpathentryそれによって問題が解決することを理解しています。しかし、.classpath ファイルで手動で行うのではなく、Eclipse にそれを実行してもらいたいのです。

さらに、Ant-Eclipse プロジェクトも調べたところ、新しい Eclipse Java プロジェクトを作成し、そのsrcフォルダーをソース フォルダーとして表示する Ant タスクが見つかりました。しかし、外部ライブラリへの依存は望んでいません。

<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 を操作するための機能が組み込まれていません。私は自分で .classpath および .project ファイルを編集するためにxmltaskを使用しましたが、それはあなたが本当に欲しくないと言った外部ライブラリです。

ただし、すべてが失われるわけではありません。Ant は、XML を第一級市民として扱う Groovyなどのスクリプトの実行をサポートしています。私は Groovy について十分な経験があり、いくつかのリンク以上のものを提供したと言えたらいいのですが、あなたが求めていることは、 へのいくつかの呼び出しで非常に実行可能に見えますappendNode()

于 2013-02-04T16:55:44.517 に答える
0

外部のものに本当に依存したくない場合は、XSLTスタイルシートを使用して.classpathファイル(XML)を編集することを検討できます。

add-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>

build.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 に答える