jwi*_*ir3 6 java eclipse jar libraries
我在我的代码中引用多个项目的地方遇到了问题.基本上,我们有一个产品,我称之为Leviathan.这个项目有很多其他版本,我们在Eclipse中作为单独的项目维护.作为开发人员,我们通常在Eclipse中同时打开多个项目(多个版本),因为我们获得了有关旧版本的帮助热线调用(以及同时开发多个版本).
我们还有测试代码,这是针对Leviathan的每个发行版的不同项目.我说出我的项目Leviathan_<branch name>.因此,例如,在我的Eclipse工作区中,我可能有以下项目:
Leviathan_scott\ (my branch) Leviathan_9.2\ Leviathan_9.3\ Leviathan_10.0\ Leviathan_10.1\ Test_scott\ Test_10.0
我的分支是我们主干的副本,所以我们可以考虑最活跃的开发线.
问题是我们在测试代码中引用了Leviathan\lib中的一些库.每个开发人员可能会略微区别他们的项目 因此,在开发测试项目的.classpath时,我们引用了项目Leviathan \(没有添加).此项目的类路径(在我们的源代码管理系统中检查)可能如下所示:
<?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>
Run Code Online (Sandbox Code Playgroud)
当开发人员将Test项目加载到他/她的个人Eclipse工作区时,他/她需要通过转到Preference-> Java Build Path-> Projects并添加Leviathan_scott项目来将项目链接到原始的Leviathan项目.
问题是,这当然不会改变任何<classpathentry ... >引用"Leviathan\lib" 的条目.所以,我们必须做两件事之一:
Leviathan到Leviathan_<branch name>我的.classpath使用文本编辑器的查找/替换.这些问题是每次更改.classpath时都需要完成,这使得这两者看起来都不太理想.我们的课程路径不会经常更改,但我会说它每两周更换一次或两次.我希望能够链接我的项目,并且必须只执行一个步骤才能链接这些项目.
看起来我们可以在Eclipse中设置一个环境变量并将其添加到.classpath条目中.但是,现在我们遇到了一个问题,因为如果我们想要编译的工作空间中有多个Test项目,那么这将无法工作.两个测试项目的.classpath条目都将引用相同的环境变量,当然这只能指向一个超级项目位置.
看起来我应该能够做到这一点,但我不知道如何在Eclipse中完成它.任何想法将不胜感激.
〜斯科特
尝试使用 Eclipse 的“类路径变量”。
Window->Preferences->Java->Build Path->Classpath Variables
Run Code Online (Sandbox Code Playgroud)
定义一个或多个变量,例如“Leviathan_under_test”,并将其指向您要测试的版本。然后,在项目构建路径中,更改库引用以包含该变量。
当您更改要测试的 Leviathan 版本时,您可以更改变量并继续。如果必须的话,您甚至可以为更频繁测试的版本使用多个变量,即“LEVIATHAN_LATEST”或“LEVIATHAN_PROBLEM_CHILD”等。
| 归档时间: |
|
| 查看次数: |
13559 次 |
| 最近记录: |