我在工作中遇到了一个问题,涉及到我们在代码中引用多个项目。 我们有一个名为Leviathan的产品,它有很多其他版本,每个版本都是我们在Eclipse中维护的单独项目。 作为开发人员,我们通常同时在Eclipse中打开多个项目(多个版本),因为我们会收到关于旧版本的帮助电话(同时开发多个版本)。
我们还有测试代码,每个Leviathan版本都有一个不同的项目。 我将我的项目命名为
问题在于,我们在测试代码中引用Leviathan\lib中的一些库。 每个开发人员可能会略微不同地命名他们的项目。 因此,在开发测试项目的.classpath时,我们引用Leviathan\(没有添加)。 这个项目的classpath(已经检入我们的源代码控制系统)可能看起来像:
当开发人员将Test项目加载到他/她的Eclipse工作区时,需要通过转到Preference->Java Build Path->Projects并添加Leviathan_scott项目来将项目链接到原始Leviathan项目。
问题在于,这当然不会更改任何引用“Leviathan \ lib”的条目。因此,我们必须做以下两件事之一:
1.使用文本编辑器查找/替换将我的.classpath中的所有引用从Leviathan更改为Leviathan_<branch name>。
2.从Java Build Path中删除对Leviathan * .jar的所有引用,并重新添加Leviathan_scott * .jar中的jars。
这些的问题在于每次更改.classpath时都需要执行操作,这使得这两个选项都不是理想的选择。我们的类路径不是经常更改,但我想说每两周更改一次。我希望能够链接我的项目,并且只需执行一个步骤即可链接这些项目。
似乎我们可以在Eclipse中设置环境变量,并将其添加到.classpath条目中。但是,现在我们有一个问题,因为如果我们在工作区中有多个要编译的测试项目,则这将无法正常工作。两个测试项目的.classpath条目都将引用同一个环境变量,这当然只能指向一个超级项目位置。
我觉得我应该能够做到这一点,但我不知道如何在Eclipse中实现它。非常感谢任何想法。
~Scott
我们还有测试代码,每个Leviathan版本都有一个不同的项目。 我将我的项目命名为
Leviathan_<branch name>
。 因此,在我的Eclipse工作区中,我可能会有像以下这样的项目:
Leviathan_scott\(我的分支) Leviathan_9.2\ Leviathan_9.3\ Leviathan_10.0\ Leviathan_10.1\ Test_scott\ Test_10.0我的分支是我们主干的副本,因此我们可以将其视为最活跃的开发线。
问题在于,我们在测试代码中引用Leviathan\lib中的一些库。 每个开发人员可能会略微不同地命名他们的项目。 因此,在开发测试项目的.classpath时,我们引用Leviathan\(没有添加)。 这个项目的classpath(已经检入我们的源代码控制系统)可能看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**/*.MySCMServerInfo" kind="src" path="src"/>
<classpathentry kind="lib" path="lib/abbot-1.0.2/abbot.jar"/>
<classpathentry kind="lib" path="lib/abbot-1.0.2/costello.jar"/>
<classpathentry kind="lib" path="lib/dbunit-2.4.8/dbunit-2.4.8.jar"/>
<classpathentry kind="lib" path="lib/easymock-3.0/easymock-3.0.jar" sourcepath="lib/easymock-3.0/easymock-3.0-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/Test/lib/easymock-3.0/easymock-3.0-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="lib/objenesis-1.2/objenesis-1.2.jar"/>
<classpathentry kind="lib" path="lib/privilegedAccessor-1.0.2/privilegedAccessor_1.0.2.jar"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-core/unitils-core-3.1.jar" sourcepath="lib/unitils-3.1/unitils-core/src"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-database/unitils-database-3.1.jar"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-dbmaintainer/unitils-dbmaintainer-3.1.jar"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-dbunit/unitils-dbunit-3.1.jar" sourcepath="lib/unitils-3.1/unitils-dbunit/src"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-inject/unitils-inject-3.1.jar"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-mock/unitils-mock-3.1.jar" sourcepath="lib/unitils-3.1/unitils-mock/src"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-orm/unitils-orm-3.1.jar"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-spring/unitils-spring-3.1.jar" sourcepath="lib/unitils-3.1/unitils-spring/src"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-testng/unitils-testng-3.1.jar" sourcepath="lib/unitils-3.1/unitils-testng/src"/>
<classpathentry kind="lib" path="data"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/unitils-3.1/unitils-core/lib/ognl-2.6.9.jar"/>
<classpathentry kind="lib" path="lib/testng-5.14.1/testng-5.14.1.jar" sourcepath="lib/testng-5.14.1/testng-5.14.1-src.zip"/>
<classpathentry combineaccessrules="false" kind="src" path="/Leviathan"/>
<classpathentry kind="lib" path="/Leviathan/lib/slf4j-api-1.6.1.jar"/>
<classpathentry kind="lib" path="/Leviathan/lib/hibernate3.jar" sourcepath="/Leviathan/lib/src/hibernate-3.6.0-src.zip"/>
<classpathentry kind="output" path="classes"/>
</classpath>
当开发人员将Test项目加载到他/她的Eclipse工作区时,需要通过转到Preference->Java Build Path->Projects并添加Leviathan_scott项目来将项目链接到原始Leviathan项目。
问题在于,这当然不会更改任何引用“Leviathan \ lib”的条目。因此,我们必须做以下两件事之一:
1.使用文本编辑器查找/替换将我的.classpath中的所有引用从Leviathan更改为Leviathan_<branch name>。
2.从Java Build Path中删除对Leviathan * .jar的所有引用,并重新添加Leviathan_scott * .jar中的jars。
这些的问题在于每次更改.classpath时都需要执行操作,这使得这两个选项都不是理想的选择。我们的类路径不是经常更改,但我想说每两周更改一次。我希望能够链接我的项目,并且只需执行一个步骤即可链接这些项目。
似乎我们可以在Eclipse中设置环境变量,并将其添加到.classpath条目中。但是,现在我们有一个问题,因为如果我们在工作区中有多个要编译的测试项目,则这将无法正常工作。两个测试项目的.classpath条目都将引用同一个环境变量,这当然只能指向一个超级项目位置。
我觉得我应该能够做到这一点,但我不知道如何在Eclipse中实现它。非常感谢任何想法。
~Scott