2010-04-20 42 views
1

我有一个由几个模块组成的maven项目。这将被部署在客户端机器上,并将涉及安装Tomcat,并将使用NSIS作为安装程序。有一个单独的应用程序,它监控Tomcat和可以重新开始,进行更新等maven程序集。将每个依赖关系与传递性依赖关系放在自己的目录中?

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

 
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 

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

我试着只是创建安装程序模块,并使显示器和客户端网络的依赖关系,但是当我使用依赖关系 - 复制它给了我一切。不是我想要的。

我倾向于创建一个名为显示器组装或东西给我其中包含我需要的目录格式的压缩文件新的模块,但毕竟是另一个模块。

有人可以帮助我用正确的方法来完成这个吗?

谢谢!

回答

0

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

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

相关问题