Maven 2取决于配置文件替换类实现?

时间:2012-03-14 16:30:44

标签: maven maven-2 replace

我有MailTransport.java和两个扩展它的类:LiveMailTransport.javaTestMailTransport.javaLiveMailTransport将真正发送电子邮件,而TestMailTransprot只会将其写入日志以进行测试。

我在某个地方new MailTransport();我希望使用MailTransportLive-替换服务器端代码中TestMailTransport的每次使用情况,具体取决于所使用的配置文件用于编译(本地,生产等)。

(类似于客户端的gwts“replace-with”......)

我怎么能和maven一起做? 谢谢!

3 个答案:

答案 0 :(得分:3)

您想要的是一个接受系统属性的工厂。如果未设置系统属性,请创建LiveMailTransport的实例。如果该属性存在,请创建TestMailTransport

的实例

建议的财产名称:com.pany.app.enableTestMails

Boolean.getBoolean(String)是你的朋友。

现在configure the surefire plugin to set the property已经完成了。

答案 1 :(得分:0)

这听起来像是滥用Maven,因为这看起来更像是依赖注入任务(例如guice),但与Maven没有任何关系。

答案 2 :(得分:0)

如果你正在使用Spring或其他一些依赖注入框架,你可以根据相应的配置来操作注入的依赖项。

但是如果你想用一个普通的裸骨Java应用程序来创建它,你可以创建多个工厂来创建相应的yoor MailTransport实例,并将这些工厂放在不同的源文件夹中。然后使用build-helper-maven-plugin根据活动配置文件添加correspoinding源文件夹。