0

我正在尝试从 1 个 java 项目构建 2 个 jar。这 2 个 jar 将具有完全相同的源,除了在构建时一个将使用设置为 True 的布尔变量进行构建,而另一个将使用设置为 False 的相同布尔变量进行构建。

例子:

Jar 1 将具有所有相同的源,但在 1 个 java 文件中除外:

public static final boolean ENABLE_TOAST = True;

Jar 2 将具有所有相同的源,除了它具有的同一个 java 文件:

public static final boolean ENABLE_TOAST = False;

我对 Maven 和 Ant 比较陌生,我有使用 maven-replacer-plugin 的想法。但是,我找不到以前做过类似事情的人。

4

2 回答 2

1

我的方法是创建三个属性文件:

  1. 应用程序属性
  2. app.properties.test.environment
  3. app.properties.prod.environment

2) 和 3) 对每个环境都有不同的设置(即 ENABLE_TOAST = false 用于 prod 和 true 用于测试)

当然,应用程序只使用 app.properties

在构建时,我将 app.properties 替换为正确环境的内容(2 或 3)

在 ANT 中,我有两个目标,每个目标都有一个将覆盖标志设置为 true 的复制文件命令。

我确定 MAVEN 也有类似的功能(忙到没时间查 ATM)

希望这可以帮助

于 2013-07-31T18:28:57.887 回答
0

您尝试做的不是标准做法,也建议您这样做,您应该使您的代码摆脱这些类型的做法。

这些类型问题的最佳解决方案是尽可能多地外部化属性,最重要的是尽量避免将这些属性文件作为 jar 的一部分。将它们存储在服务器中的某个位置。

我可以给你一个非常简单的例子,在我们的应用程序中,我们为不同的环境(如 Dev、QA、UAT 等)提供了不同的数据库连接细节,所以我们没有将所有这些东西集成到 java 代码中,而是在属性中提供了所有这些值。文件并在 java 代码的帮助下,我们在应用程序启动期间读取这些属性。

谢谢

于 2013-07-31T19:53:43.550 回答