【问题标题】:Eclipse - "Run as Java Application" when maven is involvedEclipse - 涉及 Maven 时“作为 Java 应用程序运行”
【发布时间】:2013-01-17 15:32:02
【问题描述】:

我有一个 Maven 项目。作为activeByDefault,我有生产资料。除非我将activeByDefault 放在暂存配置文件中,否则我似乎找不到使用暂存配置文件在 Eclipse 中将其作为应用程序运行的方法。 有没有办法配置它,所以我不必每次都编辑 pom?

【问题讨论】:

  • 好问题。当您在 Maven 项目上说“作为 Java 应用程序运行”时,我完全不知道 Eclipse 正在执行什么。大概它只是在后台启动其编译的版本,这将基于您的默认配置文件?如果您显式构建不同的配置文件(通过 Run as... Maven build...)然后执行应用程序会发生什么?

标签: java eclipse maven m2e


【解决方案1】:

在 Eclipse 中从 Maven 项目运行 Java 应用程序唯一受到影响的是应用程序类路径的构造方式。通常在 Maven 中有几个不同的类路径作用域:编译、编译测试(这个实际上是用于在 Eclipse JDT 中构建类路径)和运行时。运行时类路径范围用于组装应用程序启动的类路径。 m2e 实际上是使用 Maven 代码来解决它。

因此,您要么必须更改 pom.xml 中的配置文件激活设置,要么在 Eclipse 项目属性 / Maven / Active Maven Profiles 中指定活动配置文件。

如果您希望运行时配置文件不同于 Eclipse 中的构建时配置文件,现在是不可能的。您必须提交 m2e 的增强请求,以允许在计算启动类路径时指定活动配置文件。

【讨论】:

  • 扩展您的第一个建议 - 我猜 OP 可以定义在系统属性存在时激活暂存配置文件。然后将该属性包含在“作为 Java 应用程序运行”参数中?
  • @DuncanJones 完全正确。我想为临时环境创建一些东西,比如“运行”配置文件。
  • 如果“环境”是不同的用户或机器,则在该机器/用户本地的 settings.xml 中激活配置文件是有意义的。如果环境只是你临时修改的东西,我想它应该是 pom.xml 中的一个属性。
  • 将该属性添加到执行配置文件将不起作用。这些属性被传递给 Java 应用程序,到那时类路径已经被解析。我已经更新了我的答案。
  • 我通常这样做。首先,我尝试将取决于环境的所有信息放在一个文件中,我们称之为配置。然后我在项目中为我需要的每个环境创建一个文件夹,即:env-dev/、env-prod/ 等。在每个文件夹中,我放置了一个配置副本,经过适当编辑以反映环境约束。当我从 Eclipse 中运行应用程序时,我手动将 env-dev/ 添加到项目类路径中,而当我构建应用程序以通过 maven 发布时,我通过 -P 明确指定配置文件以包含来自 env 文件夹的配置我'我感兴趣。我知道...不是那么 Maven 方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2022-01-08
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
相关资源
最近更新 更多