我有MailTransport.java
和两个扩展它的类:LiveMailTransport.java
和TestMailTransport.java
。
LiveMailTransport
将真正发送电子邮件,而TestMailTransprot
只会将其写入日志以进行测试。
我在某个地方new MailTransport();
我希望使用MailTransport
或Live-
替换服务器端代码中TestMailTransport
的每次使用情况,具体取决于所使用的配置文件用于编译(本地,生产等)。
(类似于客户端的gwts“replace-with”......)
我怎么能和maven一起做? 谢谢!
答案 0 :(得分:3)
您想要的是一个接受系统属性的工厂。如果未设置系统属性,请创建LiveMailTransport
的实例。如果该属性存在,请创建TestMailTransport
。
建议的财产名称:com.pany.app.enableTestMails
答案 1 :(得分:0)
这听起来像是滥用Maven,因为这看起来更像是依赖注入任务(例如guice),但与Maven没有任何关系。
答案 2 :(得分:0)
如果你正在使用Spring或其他一些依赖注入框架,你可以根据相应的配置来操作注入的依赖项。
但是如果你想用一个普通的裸骨Java应用程序来创建它,你可以创建多个工厂来创建相应的yoor MailTransport实例,并将这些工厂放在不同的源文件夹中。然后使用build-helper-maven-plugin根据活动配置文件添加correspoinding源文件夹。