每当我从svn更新我们项目的代码时,我必须设置我再次导入的库的构建路径,因为最后一个提交的人具有与我不同的类路径.
在从SVN更新后,Eclipse中有没有办法自动放入导入的库?我听说过构建文件(Ant,Maven),但我真的不确定我是否正在寻找合适的东西.
怎么样: 不要将本地类路径文件作为".classpath"提交到存储库.
我并不是说聪明人,但让人们检查打破其他开发者环境的事情是荒谬的.
如果您的项目很简单且外部依赖性很少,则不添加.classpath/.project文件.在实践中,您经常需要维护许多关系,因此使.classpath可移植的开销远远小于每次将项目放入工作区时重新定义它的累积开销.您的配置越多,您将尝试重新构建项目配置的错误就越微妙.
您应该能够设置类路径,以便通过使用变量和库来移植它,这样就无需对路径进行硬编码.您的团队可以就要使用的一组标准变量(和/或库)达成一致.然后需要在每个开发人员的机器上定义一个变量,指向您在路径中使用的公共资源.
甚至比变量更好的是图书馆.您可以定义自定义库(下Window->Preferences->Java->Build Path->User Libraries)以引用您的公共组件,然后在每个项目中重用这些库.已配置的库可以从User Libraries页面导出并由对等方使用.
像m2eclipse这样的插件提供了Libraries(也称为Classpath Containers),可以根据某些配置自动生成内容(m2eclipse中的Maven POM).这将抽象到底层资源的路径,并允许将多个jar动态添加到路径中.
如果您不使用Maven,典型的.classpath问题是您要将文件夹中的所有jar添加到类路径中.这个答案显示了如何定义一个自定义插件来通过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"/>
Run Code Online (Sandbox Code Playgroud)
后:
<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"/>
Run Code Online (Sandbox Code Playgroud)