有两个问题:
1)有没有办法捆绑"捆绑"带有.war文件的Maven,即使在机器上没有安装Maven,部署.war文件也会启动Maven?
2)如果1)的回答是肯定的,我怎么知道.war文件的WEB-INF / lib是否是.war捆绑"与Maven或不?我应该查找哪些.jar文件会告诉我这个.war文件是"捆绑的"和Maven一起?
我尝试使用谷歌搜索,我发现只有 使用 Maven的方式将其他库捆绑到我的.jar文件中,这不会回答我的问题。
答案 0 :(得分:1)
实际上,没有简单的方法可以判断Maven是否只是通过部署战争来安装和运行。这与经典的“停止问题”类似。
对于corse,你可以打开战争,看看WEB-INF / lib目录是否包含一堆maven-*.jar
库(其中包括基本的maven-core-*.jar
),但这并不意味着他们必须安装并运行。
此外,没有找到任何这些库进入战争并不意味着Maven没有被捆绑,因为它可以被压缩成一个名为XXX-YYY的文件,然后作为静态资源压缩到一个jar中,然后再次压缩成战争。而且,如果您正在研究IDE封装,我担心这很可能。
战争甚至可以在运行时从更新站点(Maven主页本身)下载Maven。
根据停止问题的结论,你可以检查Maven是否被捆绑成战争的唯一可靠方法是部署它并在运行后观察它的行为。
答案 1 :(得分:0)
1)从某种意义上说,有没有办法用.war文件捆绑Maven 即使Maven没有安装在机器上,部署.war 文件将启动Maven?
war文件是一个Web应用程序存档 它包含一个旨在部署在Servlet容器上的Web应用程序 将Maven作为独立应用程序添加实际上非常直观。
此外,部署战争并启动Maven并不是传统的耦合任务。你使用Maven构建一个WAR,但是你没有使用Maven运行构建的war。你在服务器上运行它。
2)...通过查看WEB-INF / lib我怎么知道 .war文件是否与Maven“捆绑”在一起? 我应该查找哪些.jar文件会告诉我这个.war 文件与Maven“捆绑”?
在战争中,还有罐子和耳朵,你应该找到一个META-INF
文件夹,其中包含有关Java档案的元数据。
在其中,您应该找到MANIFEST.MF
文件,其中包含Created-By
属性的多个信息。
使用Maven 3构建时,如果使用Maven执行构建,则应该找到对Maven的引用 例如,对于使用Maven 3.3.9创建的存档,您将拥有:
Created-By: Apache Maven 3.3.9
要获取有关MANIFEST.MF
的更多信息,建议您阅读Oracle文档的Working with Manifest Files: The Basics教程。