Maven 2是否根据配置文件替换类实现?

Maven 2是否根据配置文件替换类实现?,maven,maven-2,replace,Maven,Maven 2,Replace,我有MailTransport.java和两个扩展它的类:LiveMailTransport.java和TestMailTransport.java。 LiveMailTransport确实会发送电子邮件,而TestMailTransprot只会出于测试目的将它们写入日志 我在某处做newmailtransport()我想用Live-或TestMailTransport替换服务器端代码中MailTransport的所有用法,具体取决于用于编译的配置文件(本地、生产等) (类似于客户端的gwts“

我有
MailTransport.java
和两个扩展它的类:
LiveMailTransport.java
TestMailTransport.java
LiveMailTransport
确实会发送电子邮件,而
TestMailTransprot
只会出于测试目的将它们写入日志

我在某处做
newmailtransport()
我想用
Live-
TestMailTransport
替换服务器端代码中
MailTransport
的所有用法,具体取决于用于编译的配置文件(本地、生产等)

(类似于客户端的gwts“替换为…”

我怎么能对maven这么做?
谢谢

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

如果您使用Spring或其他依赖项注入框架,则可以根据包含的相应配置操作注入的依赖项


但是如果你想用一个简单的Java应用程序来实现,你可以创建多个工厂,这些工厂将创建Yor或MailTransport的相应实例,并将这些工厂放在不同的源文件夹中。然后使用添加基于活动配置文件的相应源文件夹。

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

建议的属性名称:
com.pany.app.enableTestMail

他是你的朋友


现在,您完成了。

您使用的是src/main/java和src/test/java吗?@khmarbaise:是的,但是我们有更多的测试服务器配置文件,cont.integration,这听起来像是你需要一个测试套件来测试一个接口,这个接口可以用于多个不同的实现。这个问题不是关于测试。。。它是关于为不同的环境替换源代码中使用的类/实现,比如使用maven的策略模式。特别是,如果您使用了策略模式。这绝对是DI框架的任务。您必须考虑您的测试策略。如果您需要不同的开发、测试或生产策略。