用Maven建造2个不同来源的罐子

时间:2013-07-31 18:16:49

标签: java maven build

我正在尝试从1个java项目构建2个jar。 2个jar将具有完全相同的源EXCEPT在构建时,将使用设置为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的想法。但是,我找不到之前做过类似事情的人。

2 个答案:

答案 0 :(得分:1)

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

  1. app.properties
  2. app.properties.test.environment
  3. app.properties.prod.environment
  4. 2)和3)对每个环境都有不同的设置(例如,对于prod,ENABLE_TOAST = false,对于测试,则为true)

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

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

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

    我确信MAVEN有类似功能(太忙无法查找ATM)

    希望这会有所帮助

答案 1 :(得分:0)

您要做的不是标准做法,并且建议您也应该使您的代码免于这些类型的做法。

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

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

由于