【问题标题】:maven assemblies. Putting each dependency with transitive dependencies in own directory?Maven 程序集。将每个具有传递依赖项的依赖项放在自己的目录中?
【发布时间】:2011-02-09 23:31:10
【问题描述】:

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

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

项目 +-- 客户端(所有代码,处理程序,用于战争) +-- client-common - (共享代码,在监视器和客户端之间共享) +-- client-web - (战争,基本上只是使用战争有applicationcontext,web.xml等) +-- 监视器 - (监视器应用程序 jar。使用包装器运行)

所以,我需要创建一个安装程序。我正计划创建另一个模块,即安装程序。这是我拥有 tomcat 目录的地方,我希望 maven “组装”所有内容,然后运行 ​​NSIS,以便创建最终安装程序。

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

项目安装程序目录/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

在client-web\WEB-INF\lib 目录中,我们将在它被分解后拥有所有client-web 的依赖项。那行得通,我有 .war 文件。我遇到的问题是让监视器模块依赖项独立于客户端 Web 模块的依赖项。

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

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

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

谢谢!

【问题讨论】:

    标签: maven-2 maven-assembly-plugin


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 2013-02-17
      • 2014-05-23
      • 2012-11-16
      • 2017-01-20
      相关资源
      最近更新 更多