如何在Eclipse中自动设置构建路径

时间:2009-10-04 13:32:49

标签: java eclipse svn

每当我从svn更新我们项目的代码时,我必须设置我再次导入的库的构建路径,因为最后一个提交的人具有与我不同的类路径。

Eclipse中有没有办法在从SVN更新后自动放入导入的库?我听说过构建文件(Ant,Maven),但我真的不确定我是否正在寻找合适的东西。

5 个答案:

答案 0 :(得分:9)

如何:不要将本地类路径文件作为“.classpath”提交到存储库。

我并不是说聪明人,但让人们检查打破其他开发者环境的事情是荒谬的。

答案 1 :(得分:5)

如果您的项目很简单且外部依赖性很少,则不添加.classpath / .project文件。在实践中,您经常需要维护许多关系,因此使.classpath可移植的开销远远小于每次将项目放入工作区时重新定义它的累积开销。您的配置越多,您在尝试重新构建项目配置时就会遇到更微妙的错误。

您应该能够设置类路径,以便通过使用变量和库来移植它,这样就无需对路径进行硬编码。您的团队可以就要使用的一组标准变量(和/或库)达成一致。然后需要在每个开发人员的机器上定义一个变量,指向您在路径中使用的公共资源。

甚至比变量更好的是库。您可以定义自定义库(在Window->Preferences->Java->Build Path->User Libraries下)以引用您的公共组件,然后在每个项目中重用这些库。已配置的库可以从User Libraries页面导出并由您的同行使用。

m2eclipse之类的插件提供了可以根据某些配置自动生成内容的库(也称为Classpath Containers)(m2eclipse中的Maven POM)。这抽象了底层资源的路径,并允许动态地将多个jar添加到路径中。

如果您没有使用Maven,典型的.classpath问题是您要将文件夹中的所有jar添加到类路径中。 This answer显示了如何定义自定义插件以通过Classpath容器在文件夹中提供所有jar,您还可以使用此方法自动将源附加到已发现的元素,并避免每次都重复此操作

这是我最近工作的项目的.classpath的典型代码。该库使配置更加冗长,更具可移植性,允许跨项目重用,并定义源附件。

在:

<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/xml-apis.jar" sourcepath="C:/apache-ant-1.7.1/src/main"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant.jar" sourcepath="C:/apache-ant-1.7.1/src/main"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-antlr.jar" sourcepath="C:/apache-ant-1.7.1/src/main"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-bcel.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-bsf.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-log4j.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-oro.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-regexp.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-apache-resolver.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-commons-logging.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-commons-net.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jai.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-javamail.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jdepend.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jmf.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-jsch.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-junit.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-launcher.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-netrexx.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-nodeps.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-starteam.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-stylebook.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-swing.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-testutil.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-trax.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/ant-weblogic.jar"/>
<classpathentry kind="lib" path="C:/apache-ant-1.7.1/lib/xercesImpl.jar"/>

后:

<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<!--all ant jars and source attachments defined here -->
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ant"/>

答案 2 :(得分:3)

maven依赖管理和maven eclipse插件将是一种解决方案。

一旦你有一个正在运行的maven设置,你可以使用eclipse插件创建.project和.classpath文件。这些文件不会被签入(所有信息都在maven pom文件中)。

答案 3 :(得分:0)

要么不检入类路径文件,要么在每个开发人员的计算机上使用相同的目录结构。

答案 4 :(得分:0)

Ant + Ivy是另一种解决方案。据我所知,没有常春藤 - &gt;日食任务。我们在其中一个项目中使用了ant + ivy,并从常春藤元数据中创建了.classpath和.project文件。 (这是常春藤1.x也许常春藤2已经能够做到这一点。)这类似于maven方法。