如何在Eclipse中将项目名称作为VM参数获取?

3
考虑一个配置类,需要为每个Eclipse项目解析不同的配置文件。
例如,如果从Project1调用Configuration类,则应解析special/path/fileX,如果从Project2调用,则应解析special/path/fileY
我尝试过使用Eclipse的{project_name}, 但令人惊讶的是它被解析为鼠标光标所突出显示的项目,而不是当前类的父项目。
有什么想法可以在Eclipse运行时区分一个项目和另一个项目,最好使用JVM参数?

为什么你没有将文件路径/名称作为参数从调用传递到配置类? - Gilbert Le Blanc
我不明白这个问题,这段代码在哪里运行?是在IDE中,还是在RCP应用程序中,或者是其他什么地方? - Francis Upton IV
我希望有一个选择的单一点。Configuration类在项目中被许多类调用 - 我希望能够一次更改整个项目的文件。 - Adam Matan
@FrancisUpton 代码正在IDE中运行。当它在生产环境中时,有一个特殊的VM参数告诉Configuration类文件的确切路径。 - Adam Matan
通过不同的classpath来区分项目,例如log4j或Spring。将配置文件放置在项目的classpath上,使每个项目都有相同名称但位于不同目录中的文件。这是"最佳实践",因为它将“配置”与它所用的项目的知识隔离开来。 - Old Pro
显示剩余2条评论
3个回答

2

这是解决你描述的问题的一种方法,但我认为它是更好的解决方案,因为它不依赖于Eclipse,并且在生产环境中也很容易使用。

只需从类路径中加载相同的文件,无论您从哪个项目启动它:

/my/file/from/classpath.txt

但是将此文件仅放置在Project1 / Project2中,以使各个文件根据您的设置相互排除:
/Project1/src/my/file/from/classpath.txt
/Project2/src/my/file/from/classpath.txt

src 是 Java 源代码文件夹。现在,您仍然可以使用 JVM 参数来覆盖此设置,或者在上述设置缺失时提供默认值。


0

我认为最简单的方法是使用Eclipse的运行配置。只需创建尽可能多的配置,提供所有所需的JVM参数,并使用它们进行启动。这也非常接近您在生产模式下要做的事情。


谢谢。问题在于用户需要为每个JUnit定义不同的运行配置,这很繁琐。 - Adam Matan

0

或者您可以前往Eclipse的已安装JRE并将配置设置为JVMArgs,就像在生产环境中一样。

如果需要,您可以在每个环境中拥有不同的JRE副本。

此外,如果从IDE运行,您可以获取System.getProperty(“user.dir”),这应该是项目的根目录。

该系统属性可用于跟踪被调用者。更好的方法是将已安装的JRE的JVM Args设置为以下内容

-Dtheflaginprod=${project_loc}

project_loc = absolute path of the the project (/usr/projects/project1)
project_path = project name relative to the workspace  (/project1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接