我有一个由几个模块组成的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文件,其中包含我需要的目录格式,但那是还另一个模块。
有人可以用正确的方法帮助我吗?
谢谢!
答案 0 :(得分:0)
最优雅的是编写自己的Maven插件或扩展maven-dependency-plugin
。实际上你需要的是非常接近dependency:copy-dependencies
,但你需要有可能指定你想要开始的工件。正如我从代码中看到的那样,目前这是不可能的。
进一步的想法:您可以为每个模块创建一个zip程序集(包括您需要的模块依赖项)并使用依赖项:解压缩以在安装程序模块中解压缩这些zip文件。