【发布时间】:2015-12-30 15:06:35
【问题描述】:
我正在尝试使用另一个专有的 Java 框架编写一个 spring xd 模块。 spring xd 和这个专有框架都要求我继承它们的父 POM,这显然是不可能的。
我的解决方法是找出 Spring XD 父 pom 的作用,并将其或多或少地放入我的层次结构中的另一个 pom 中。我如何获得这个 XD 父 pom?还是有更好的方法?
【问题讨论】:
标签: java spring maven spring-xd
我正在尝试使用另一个专有的 Java 框架编写一个 spring xd 模块。 spring xd 和这个专有框架都要求我继承它们的父 POM,这显然是不可能的。
我的解决方法是找出 Spring XD 父 pom 的作用,并将其或多或少地放入我的层次结构中的另一个 pom 中。我如何获得这个 XD 父 pom?还是有更好的方法?
【问题讨论】:
标签: java spring maven spring-xd
你说得对,Maven POM 中不支持“多重继承”。您也无法控制 Spring XD 或其他专有框架的代码,因此您无法将一个 pom.xml 更改为从另一个继承。
一种可能的解决方法是将您的项目构建为一个多模块项目,其中一个模块继承自 Spring XD 的 POM,而另一个模块继承自另一个框架的 POM。然后,您可能会拥有依赖于前两个的第三个模块,它将整个项目组合成一个可交付成果。
MyProject
|-- MySpringXDIntegration
| `-- pom.xml inherits from Spring XD
|-- MyProprietaryFrameworkIntegration
| `-- pom.xml inherits from proprietary framework
`-- MyApplication
`-- pom.xml inherits from neither Spring XD nor proprietary framework
depends on MySpringXDIntegration
depends on MyProprietaryFrameworkIntegration
如果由于某些其他原因这种项目结构还不够,那么另一种解决方法是“内联”两个父 POM 之一的相关部分。 Spring XD 父 pom.xml 可见 here。对于专有框架,如果源代码已经给你了,那么你可以去那里看看。如果没有,那么您可以简单地使用 jar xf 解压该框架的 jar,然后查找其中捆绑的 pom.xml。我建议确定 2 个 pom.xml 文件中哪个更大。从较大的继承,然后通过将较小的部分复制粘贴到您自己的 pom.xml 中来内联较小的相关位。
了解父 POM 的确切功能的一种方法是创建一个从它继承的虚拟项目,然后运行 mvn help:effective-pom。如果父 POM 已经拥有自己的深层继承链,这将特别有用。
【讨论】: