Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 maven组件。是否将每个具有可传递依赖项的依赖项放在自己的目录中?_Maven 2_Maven Assembly Plugin - Fatal编程技术网

Maven 2 maven组件。是否将每个具有可传递依赖项的依赖项放在自己的目录中?

Maven 2 maven组件。是否将每个具有可传递依赖项的依赖项放在自己的目录中?,maven-2,maven-assembly-plugin,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 - (th

我有一个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) 项目 +--客户端(用于war的所有代码、处理程序) +--客户端公用-(共享代码,在监视器和客户端之间共享) +--客户端web-(war,基本上只使用war有applicationcontext、web.xml等) +--监视器-(监视器应用程序jar.使用包装器运行) 所以,我需要创建一个安装程序。我计划创建另一个模块,即安装程序。这就是我拥有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 项目安装程序目录/monitor/monitor-version.jar 项目安装程序目录/monitor/lib/monitor-dep-1.jar 项目安装程序目录/monitor/lib/monitor-dep-2.jar 项目安装程序目录/monitor/lib/monitor-dep-3.jar 项目安装程序目录/webapps/client-web.war 其中,在clientweb\web-INF\lib目录中,我们将在分解后拥有所有clientweb的依赖项。行了,我有.war文件。我遇到的问题是,使监视器模块的依赖关系独立于客户端web模块的依赖关系

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

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

有人能帮我找到正确的方法来完成这件事吗


谢谢

最优雅的方法是编写自己的Maven插件或扩展
Maven依赖插件
。实际上,您需要的非常接近于
依赖项:复制依赖项
,但是您需要一种可能性来指定您想要从哪个工件开始。正如我从代码中看到的,这在目前是不可能的

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