我有一个有趣的问题。我有两个项目,它们都依赖于库的不同版本。由于版本限制,各个项目无法更改其依赖项。
所以:
项目A取决于lib版本1
项目B依赖于lib版本2
lib版本2与版本1二进制兼容,但具有其他功能,因此我们不希望更新项目A以依赖于版本2.
当运行仅涉及项目A的测试时,类路径是完美的,它只包含lib的版本1.
当运行仅涉及项目B的测试时,类路径是完美的,它只包含lib的第2版。
当运行涉及项目A和B的测试时,类路径被破坏,因为它包含lib的版本1和版本。
有没有办法说“只使用这个库进行编译,而不是为运行时类路径导出”?这在某些方面与JAR文件上的导出标志相关(但相反),因为它将它作为编译依赖项导出到您依赖的项目。我希望不将其导出为运行时依赖项。
从命令行运行时,这一切都适合我们,只有在Eclipse中我们才能看到这个问题。
答案 0 :(得分:1)
可以通过junit运行配置对话框为junit启动配置指定类路径。请参阅此处“自定义测试配置”部分:https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-junit.htm
(图片来自https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-junit.htm)
需要将新版本的库添加到默认元素之前的类路径中,以便在类加载期间首先看到新的库版本。
配置正确的类路径后,通过Export ... -> Launch Configurations
将启动配置导出到工作区。然后,您可以通过右键单击它并选择Run as -> <Your Lauch Config name>