maven组件。将每个依赖项与传递依赖项放在自己的目录中?

时间:2010-04-20 04:26:26

标签: maven-2 maven-assembly-plugin

我有一个由几个模块组成的maven项目。这将部署在客户端计算机上,并将涉及安装Tomcat,并将使用NSIS作为安装程序。有一个单独的应用程序监视tomcat并可以重新启动它,执行更新等。

所以,我的模块设置如下:

project
  +-- client (all code, handlers, for the war)
  +-- client-common - (shared code, shared between monitor and client)
  +-- client-web - (the war, basically just uses war has applicationcontext, web.xml,etc)
  +-- monitor - (the monitor application jar. Uses wrapper to run)

所以,我需要创建一个安装程序。我打算创建另一个安装程序模块。这是我将拥有tomcat目录的地方,我想让maven“组装”所有内容,然后运行NSIS,这样我就可以创建最终的安装程序了。

但是,我需要将监视器jar文件放在目录中,然后将所有监视器依赖项放在lib /目录中。最终目录结构应为:

project-installer-directory/monitor/monitor-version.jar
project-installer-directory/monitor/lib/monitor-dep-1.jar
project-installer-directory/monitor/lib/monitor-dep-2.jar
project-installer-directory/monitor/lib/monitor-dep-3.jar
project-installer-directory/webapps/client-web.war

在client-web \ WEB-INF \ lib目录中,我们将在爆炸后拥有所有客户端Web的依赖关系。这有效,我有.war文件。我遇到的问题是使监视器模块依赖性独立于客户端Web模块的依赖性。

我试图创建安装程序模块并制作监视器和客户端Web依赖项,但是当我使用依赖项时 - 复制它会给我一切。不是我想要的。

我倾向于创建一个名为monitor-assembly的新模块,或者给我一个zip文件,其中包含我需要的目录格式,但那是另一个模块。

有人可以用正确的方法帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

最优雅的是编写自己的Maven插件或扩展maven-dependency-plugin。实际上你需要的是非常接近dependency:copy-dependencies,但你需要有可能指定你想要开始的工件。正如我从代码中看到的那样,目前这是不可能的。

进一步的想法:您可以为每个模块创建一个zip程序集(包括您需要的模块依赖项)并使用依赖项:解压缩以在安装程序模块中解压缩这些zip文件。