【发布时间】:2017-09-17 15:31:38
【问题描述】:
假设我有一个通过mywebapp.war 部署的非常普通的网络应用程序,由Maven 生成:
webapps
|
|--mywebapp.war
|--mywebapp
|
|--images
|--js
|--jsp
|--jardeploy
|--META-INF
|--styles
|--WEB-INF
现在我想在webapps/mywebapp/jardeploy 中部署myjarfile1.jar 和myjarfile2.jar(或更多)。它们是另一个 Maven 项目的产物,而不是制造战争的那个。它们也不是 mywebapp 使用的 jar,它位于 WEB-INF/lib 下,而是单独构建的可下载 jar,而不是 mywebapp 源代码的一部分。
有没有办法在 Maven 中打包一个打包两个或多个 jar 的档案,当放入 webapps 时,将不会在默认 webapps/jardeploy 中部署,而是在 webapps/mywebapp/jardeploy 中部署?这与我将 jar 包复制到该目录中是一样的,但我想遵循标准的应用程序服务器部署协议,将生成的工件放在 webapps 中,而不是以前的 hacky 方法。我实际上想要一个正式的工件(就像战争一样)而不是部署后的附加组件。有没有办法告诉(可能在清单中)它需要解压 jar 并将其放入该目录(如果该目录存在)?
容器无关紧要,但它是 Tomcat 7。
【问题讨论】:
-
如果您的
mywebapp不使用它们,为什么还要打包它们?如果您确实在mywebapp中使用它们,那么为什么需要将它们部署到不同的目录? -
它们确实被用作从 mywebapp 启动的 webstart。但是它们的构建过程与包含的 Web 应用程序完全不同。它是应用中的应用。
-
这类似于例如,如果 jars 是您网站上的永久下载链接,但由于版本控制,它们需要经常重建(而不是项目结构中的静态文件)。因此,您构建您的网络应用程序,然后构建可下载的工件(这就是 webstart 本质上是 + 可运行的)
-
如果我理解正确,您想将这 2 个 maven 依赖项下载到与其他文件夹不同的文件夹中吗?
-
我不想下载它们。用户这样做。与
WEB-INF/lib不同,我需要将它们部署到可供下载的目录。但是它们需要在部署容器应用程序之后进行部署。将其视为对现有已部署应用程序的修正。