2011-09-08 43 views
0

我目前正在使用Eclipse插件來提供iPOJO操作支持。 iPOJO的原理是修改由Java編譯器生成的.class文件,以注入一些方法並向Manifest.mf文件添加/更新條目。如何在Eclipse構建器中進行構建後修改

目前,我的插件提供了一個項目「自然」,並添加了一個Builder,添加到項目生成器列表的末尾,調用iPOJO Manipulator。 我在PDE項目中使用它。

的完整過程的作品,但我有一個問題:

當我的建設者已經完成它的任務(和建設過程中),在整個建設過程中重新啓動,清除輸出文件夾,再打電話給我的建設者。 如果我不添加安全技巧,它會讓構建過程一遍又一遍地循環。

當我在IResource上工作時,IResourceDeltaEvent必須在構建過程結束時發送,所以我認爲避免這種問題的最好方法是隱藏資源已經改變的事實。

爲了清楚起見,我正在尋找一種在PDE構建之後修改類文件的方式,而不會引發新構建,也不會禁用工作區自動構建屬性。

感謝您的回答。

回答

1

我對你所描述的有點不清楚。

您提到您希望這適用於PDE構建,但PDE構建基本上在使用ant腳本的工作空間之外發生。他們不使用IResource,Builder或IResourceDeltaEvent。

我在猜測你並不是指PDE構建,而是在工作空間內建立插件項目。

通常,Eclipse(特別是JDT)期望它可以完全控制輸出文件夾。但是,在首選項 - > Java - >構建 - >輸出文件夾中有一個名爲「重建其他人生成的類文件」的選項。確保這是禁用的。 Eclipse不應該嘗試重建您觸摸的類文件。如果您的構建器只涉及類文件,那麼它在更改類文件後不會觸發其他構建。唯一的是你需要小心,不要兩次編譯東西(我認爲這是你所描述的問題)。

或者,您可能更容易實現CompilationParticipant(和org.eclipse.jdt.core.compilationParticipant擴展點)。這將使您能夠準確知道JDT何時調用編譯以及編譯的內容。

此外,您將收到協調操作的通知(即未更改的工作副本)。如果你想操作文件,你可能會對你很有用。

+0

感謝您的回答:我的問題是「重建類...」選項已被切換到一些已編譯的項目上。 我暫時保存了Builder模型,但是CompilationParticipant看起來很有趣。 –