作为一个实验,我们想在Java 6的运行时版本而不是JDK上使用Eclipse java编译器(从eclipse.org下载的ecj-3.5.jar)构建我们的产品,据我所知,这是一个添加的问题.这个jar到ant类路径,并将build.compiler属性设置为指向适配器.
通过包括
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" />
Run Code Online (Sandbox Code Playgroud)
在我的build.xml中并使用JRE调用ant,我得到了无法找到适配器的预期错误,并且通过在Eclipse面板中的类路径中添加ecj-3.5.jar,我可以按预期编译我的代码.我相信使用现代蚂蚁命令行中的"-lib foo.jar"可以使用相同的功能.
现在,我想在 build.xml中指定我希望我的类路径上的ecj-3.5.jar满足上述要求.我们已经可以使用ant任务执行此操作,因此我认为这是可能的.
所以问题是:我如何添加到javac使用的类路径,只能从build.xml中找到编译器?
看来即将推出的ant4eclipse 1.0包含了Eclipse编译器(我想用它来实现),所以通过升级到它(从0.5开始)应该可以解决我们遇到的问题.
2010-09-24:Ant4Eclipse仍然在M4,没有迹象表明何时会发布.
2011-12-01:我们现在已经从蚂蚁迁移到了maven.build.xml脚本遇到了复杂问题,需要采用新方法.任何人都需要选择做什么 - 除了琐碎的项目之外,不要去ant4eclipse路径.
2012-11-30:一年后,maven的经历仍然很好.思维方式有很多怪癖和变化,但大多数情况在上下文中都有意义.Maven可以轻松地在单个项目上指定编译器级别.我们正在研究使用ecj而不是javac(出于几个原因)但是对于大多数用途来说,javac工作得很好.
Mar*_*ark 12
一种方法是在使用javac时指定componentdef的引用.
<componentdef name="ecj"
classname="org.eclipse.jdt.core.JDTCompilerAdapter"
classpath="ecj-3.7.1.jar" />
<javac ....>
<ecj/>
</javac>
Run Code Online (Sandbox Code Playgroud)
另一个选择是设置build.compiler或javac的编译器属性,然后为javac指定编译器类路径.这是一个普通的路径,就像保存用于加载编译器适配器的类路径一样.
<javac compiler="org.eclipse.jdt.core.JDTCompilerAdapter" ....>
<compilerclasspath>
...
</compilerclasspath>
</javac>
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅Ant手册中的javac任务文档.请注意,这两个解决方案仅适用于Ant 1.8以上版本.
| 归档时间: |
|
| 查看次数: |
3778 次 |
| 最近记录: |