0

我想知道是否可以在 Maven 中实现如下的接口项目。

Project-A 和 Project-B 具有相同的类,在 Project-C 中实现接口。Project-Z 仅使用 Project-I(POM),其中包含 Project A、B、C 作为模块。

我想使用配置文件机制,以便 Project-Z 使用 Project-A 或 Project-B 的实现。

如果您认为可能,请给我一个简单的例子。

谢谢。

4

2 回答 2

1

您可以使用 java SPI(服务提供者接口),两个实现 jar 通过它在清单中声明相同的服务。使用应用程序可以进行查找、迭代并选择一个。(我现场没有找到一个简单的例子。)

于 2012-05-27T10:13:26.523 回答
0

如果你真的想用一个 Maven 配置文件来做这件事,最简单的方法是你可以在配置文件中设置一个带有类名的属性。然后在运行时实例化这个属性中的类。

<profile>
    <id>a</id> 
    <properties> 
         <myproject.componentX.implementation.class>com.foo.bar.BazA</myproject.componentX.implementation.class>

看起来可能很奇怪,为什么你想在构建时在根 pom 中这样做......也许你打算不经常改变它。有更好的方法,取决于你打算做什么。

你能解释一下在什么情况下你想改变它,为什么以及多久改变一次?

于 2012-05-29T05:24:46.647 回答