我正在使用以下一堆软件:
我使用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
的{{1}},以便在我打开时in Eclipse using Ant
Eclipse中的项目。
注意:我知道项目的类路径存在于shown as a source folder
文件中,而.classpath
会解决我的问题。但我希望Eclipse能够做到这一点而不是我手动在.classpath文件中进行。
此外,我还查看了Ant-Eclipse project并找到了一个Ant任务来创建一个新的Eclipse Java项目并将其adding a classpathentry
文件夹显示为源文件夹。但我不希望依赖外部库。
src
有没有办法在Eclipse中现有的Ant库中执行此操作?
非常感谢!
答案 0 :(得分:1)
eclipse .classpath文件是一个XML文档,因此在其中添加源文件夹涉及编辑XML。不幸的是,Ant没有任何内置的工具来以任何有意义的方式操作XML。我自己用xmltask来编辑.classpath和.project文件,但这是你说你真的不想要的外部库。
然而,所有内容都不会丢失 - Ant supports running scripts,包括Groovy, which treats XML as a first-class citizen。我希望我可以说我有足够的Groovy经验给你提供更多的链接,但你对appendNode()
的一些调用看起来非常可行。
答案 1 :(得分: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>
<强>的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" />