0

我有一个 webapp,我称之为core,它可以添加插件(不是 maven 插件),但它应该作为一个独立的 webapp 运行和构建。我们有一个核心依赖的插件库,并且所有开发到核心的插件也依赖于它。

像这样:

core    -> core-plugin-lib
plugins -> core-plugin-lib

我的目录结构很简单:

root/
    core/
        pom.xml
    core-plugin-lib/
        pom.xml
    pluginA/
        pom.xml
    pluginB/
        pom.xml

我的第一个问题是:我可以构建核心或任何插件并构建依赖库吗?我阅读了有关modules的信息,但如您所见,该 lib 有 2 个父级。我真正想要的是构建核心并构建库,或者如果我构建了任何插件,我还想独立构建库。还要注意,核心不依赖于任何插件。

第二个问题是:如何构建核心也构建插件,虽然核心不依赖于它们,并且插件不应该是核心的模块。他们可以,这不是必需的,但我宁愿不这样做,因为我想尽可能保持独立。

截至目前,当我构建插件时,它会将自身复制到核心内的 /plugin 目录,并且我在核心 pom 中有一个分发配置文件,用于将现有插件从该目录复制到 webapp 的战争中。因此,当我构建没有配置文件的核心时,它不会复制其插件,但是当我运行分发配置文件时,是的。这可行,但很乏味,因为我必须构建库、构建插件和构建核心。

我想知道是否有任何 pom 结构可以解决我的第一个问题的双重依赖,以及是否有任何方法可以处理第二个问题并通过核心构建插件,即使它们不依赖。并且,如果可能的话,如果我可以在配置文件中而不是单独的 pom.xml 中处理第二个问题。此配置文件使用maven-assembly-plugin创建一个包含所有内容的tar.gz。如果可能的话,我也想保持这一点。

4

1 回答 1

1

我阅读了有关模块的信息,但如您所见,该库有 2 个父级。

我认为您的意思是 lib 有 2个依赖于它的项目。父级在 Maven 中意味着特定的东西:由另一个继承的 POM。在这种情况下,我认为模块是您正在寻找的。

至于你是否可以用核心和插件构建lib,那么是的,这是可能的。这是个好主意吗?我会说,不。插件库定义插件和核心之间的契约。通常,您想确切地知道您所依赖的版本,而不一定总是最新的。我建议您保持 lib 的版本独立于其他项目,并根据需要构建它。然后让您的核心和插件依赖于您所针对的本地(或远程)存储库中的版本。

如果您决定将它们一起构建,那么只需定义一个单独的多模块 POM,可能与其他 POM 相邻,将两个项目都包含为模块。

关于第二个问题,您当然可以定义一个单独的 POM,将核心和插件构建在一起。使用相同的多模块技术。

于 2011-09-15T23:43:10.253 回答