【问题标题】:How to combine spring XD with another framework?如何将spring XD与另一个框架结合起来?
【发布时间】:2015-12-30 15:06:35
【问题描述】:

我正在尝试使用另一个专有的 Java 框架编写一个 spring xd 模块。 spring xd 和这个专有框架都要求我继承它们的父 POM,这显然是不可能的。

我的解决方法是找出 Spring XD 父 pom 的作用,并将其或多或少地放入我的层次结构中的另一个 pom 中。我如何获得这个 XD 父 pom?还是有更好的方法?

【问题讨论】:

    标签: java spring maven spring-xd


    【解决方案1】:

    你说得对,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 已经拥有自己的深层继承链,这将特别有用。

    【讨论】:

    • 我喜欢多模块方法。在我看来,这似乎是最干净的做事方式。希望我能够以这种方式构建一个包含所有需要的依赖项的 uberjar,以便我可以部署模块!
    • 仅供参考,我只需要两个模块。一个继承自我的专有框架,一个继承自 Spring XD 并依赖于另一个模块,再加上使用 Spring boot 构建 uberjar。第三个封闭项目只是一个引用这两个模块的反应器。
    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2017-10-23
    • 2013-06-03
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多