2009-01-30 64 views
7

我正在开展SWT项目,作为团队的一部分。由于Eclipses .classpath文件被检入到版本控制中,并且我们为我们的机器添加了不同的SWT库,所以我们不断打破彼此的构建环境。如何为特定的O/S平台指定Eclipse .classpath条目?

取决于谁犯最后,在进入的.classpath可以:

<classpathentry kind="lib" path="lib/swt/swt-win32.jar"/> 

<classpathentry kind="lib" path="lib/swt/swt-carbon.jar"/> 

<classpathentry kind="lib" path="lib/swt/swt-gtk.jar"/> 

看来,图书馆是互斥的,即你不能一次包含它们,让SWT解决它。所以我们需要以某种方式为每个平台过滤它们...

有没有人有关于如何做到这一点的任何想法?我最初的想法是将其分割成它自己的“.classpath-swt”文件(被VCS忽略),使用Ant自动生成它并将其包含在主要的.classpath中,但似乎Eclipse不支持分割.classpath文件。

我们目前的解决方法是避免提交.classpath,除非我们实际上已经改变了依赖关系,但是这仍然意味着许多人在每次改变.classpath时都必须修复它们的开发环境。

任何建议将非常感激,只要它不是“不使用Eclipse”,因为这不是为这个项目:)选项

回答

9

Eclipse将让你定义的类路径变量,这样你就可以保持.classpath相同,但每个开发人员都会根据平台配置她的Eclipse。您至少可以对.classpath文件进行版本化。你将不得不改变你存储你的SWT罐子的目录结构,以使罐子名称不会在每个平台上改变。此菜单中可以找到: “窗口 - >首选项 - > Java的>构建路径

SWTJARDIRECTORY/ 
    WIN32/ 
     SWT.JAR 
    CARBON/ 
     SWT.JAR 
    GTK/ 
     SWT.JAR 

例。

SWT_PLATFORM="SWTJARDIRECTORY/GTK", set by developer in Eclipse 

的.classpath

SWT_PLATFORM/SWT.JAR 
+0

这正是我所期待的,谢谢! – seanhodges 2009-01-30 12:29:09

+0

这在XML中看起来如何?对于其他人来说,在XML中实际使用变量会很有帮助(并且可以节省时间来研究eclipse如何分析XML变量) – Gubatron 2011-06-29 23:24:51

+0

看起来您需要“扩展”一个变量(Java Build Path >添加变量>扩展)以在构建路径中使用它。你的XML将被设置为var:```` – idbrii 2011-07-06 20:00:55

0

如何简单地配置自己的实例,并为您的环境中这一个组成部分,你不把它放在你的源代码控制?

或者,您可以为每个环境(可能位于另一个目录中)和ant文件(即build-setup-env.xml文件)中存储一个类路径文件,您可以为每个环境复制正确的环境。至于在源代码管理中保留这个副本,您必须确保在更新时将其复制回来。

1

您应该将这些库放在单独的,易于识别的项目中,而不是放置在每个项目中。

E.g.创建一个名为“00-swt-provider”的项目(所以它最上面),让它参考​​“00-swt-provider-carbon”,“00-swt-provider-win32”或“00-swt-provider” -gtk”。

其中任何一个都会为给定平台导出适当的本机库,唯一的链接是在00-swt-provider中。实际项目只引用这个元项目。

我们在内部使用这种变体 - 它适用于我们。

0

SWT通过而不是版本化.classpath文件,但是通过版本附加了操作系统和窗口系统的多个单独的.classpath_ *文件。 .classpath_win32_win32。因此,当您检出资源库中的源时,您应该将相应的类路径文件复制到.classpath并重新编译您的项目。