我想编写一个简单的Ant任务,它将与Eclipse工作区交互以从中获取一些信息。我希望能够使用各种Eclipse API(例如,IWorkspace
)。
我的问题是如何做到这一点最简单的方法。
作为Eclipse用户,我对Eclipse平台有很好的了解 - 但是没有Eclipse平台的开发。我理解,在运行时,我的Ant任务必须在与工作空间相同的JRE下调用 - 这是我愿意接受的限制。
我开始创建一个Java项目来保存我的Ant任务。我相信现在我唯一能做的就是如何在Eclipse的JAR上定义JAR依赖。我显然不希望依赖于一个特定的Eclipse JAR,因为它们是版本化的(例如,Eclipse的“Resources”插件)。是否有可能让我的Java项目构建时依赖于“无论当前的JAR是什么资源插件”?
答案 0 :(得分:2)
我认为这篇文章非常适合您的问题:http://www.ibm.com/developerworks/rational/library/09/eclipsecustomanttasks/
它针对的是IBM Rational Application Developer,但是它基于Eclipse和AFAIS,这里没有过多的非eclipse特定事件发生,至少没有关于如何在Eclipse中提供任务的具体细节(编写插件定义等)。
答案 1 :(得分:1)
因此,您需要在Eclipse中运行的Ant任务。正如您所说,很明显这些任务正在使用Eclipse API。截至目前,我并不真正理解他们是如何做到的。我看了几个人的来源,我仍有疑问。
要查找Eclipse提供的所有Ant任务的位置,请执行org.eclipse.ant.core.antTasks
的插件搜索。当我这样做时,我会看到大约20个扩展,其中许多扩展定义了多个任务。
如果您获得了一个贡献其中一个任务的插件的源包,您可以查看它的源代码。 RefreshLocalTask位于org.eclipse.core.resources中;遗憾的是,当我将此捆绑包作为源项目导入我的工作区时,Ant任务的源无法正确链接。在它们中有一个单独的jar(在bundle中),虽然源在bundle中,但是不清楚如何编译jar。结果是我没有在我的工作区中编译Ant任务源。
您还可以使用Google作为Ant任务源;这是RefreshLocalTask
的{{3}}。
无论如何,在源代码中,您可以看到org.eclipse.core.resources.ResourcePlugin
的来电,说明您可能需要的内容。
啊,我在扩展点描述中看到 - 右键单击其中一个搜索结果并选择“显示描述”,或者从Manifest编辑器那里去 - 那里有一个你可以设置的标志,“eclipseRuntime”;该文本暗示如果设置,Eclipse将在同一个VM中启动任务。
答案 2 :(得分:0)
您可能应该多说一些您想做的事情,因为您可以采取多种途径。
你不能做什么:我很确定当Eclipse启动Ant时,它总是在一个单独的VM中,无法回调到Eclipse。
所以也许你应该多说一下你想做什么。