我完成了我的web应用程序的开发,现在在打包之后,我得到了输出路径中的以下结构:

是否可以将所有这些文件夹和文件打包到一个war文件中(就像开发人员使用uber-jar或胖jar所做的那样)?我的意思是,我只希望目标文件夹中有一个单一war文件,这是maven-package目标的结果。
如果可能的话,我还希望我的单个war文件是可执行(双击)。
发布于 2016-07-20 06:21:35
我想你只是不明白.war包装的主要思想。你应该把它看作一个独立的模块,它与外部世界没有任何关系。因此,您可以在不同的系统和不同的web容器中使用它(正如注释中提到的,它们是JBoss、GlassFish、WebSphere)。
所有这些都会带来以下优势
发布于 2016-07-20 06:35:57
我不知道为什么要将整个目标目录变成单个war文件。
1)是否可以将所有这些文件夹和文件打包到一个war文件中(就像开发人员使用uber-jar或胖jar那样)?我的意思是,我只希望目标文件夹中有一个war文件,作为maven包目标的结果。
在任何需要的情况下,修改pom.xml中的pom.xml阶段配置,并添加要打包到WebARchive (WAR)中的所有文件/目录。
但是,在执行maven包阶段之后,您不再需要目标目录中的目录/文件(除外,WAR文件包含必要的类、库和资源)。如果是,那么在项目的pom文件中添加下面的maven片段,并根据需要修改配置部分。
maven-snippet
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>id.post-clean</id>
<phase>post-clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<delete
dir="${project.build.outputDirectory}/dir-to-be-deleted"
includeemptydirs="true"/>
</target>
</configuration>
</execution>
</executions>
</plugin>2)我也希望我的单个war文件是可执行的(双击),如果可能的话。
是的是可能的。在此之前,WAR文件的目的是将应用程序打包为web容器(如Tomcat、Glassfish、Weblogic、JBoss等)的存档,它应该通过这些容器进行部署,以便于访问和配置应用程序,以避免运行时出现意外的结果。
通过嵌入上面提到的任何一个容器和您需要的套件来生成一个WAR文件。但它不应该与windows或可执行的jar的行为完全相同。
首先通过cli中的java命令调用war文件,然后通过web浏览器或任何http客户端访问应用程序。
这里是一篇很棒的文章,它提供了将apache应用服务器嵌入到java应用程序中的指导。
希望这能帮助你实现你的目标。
https://stackoverflow.com/questions/38464761
复制相似问题