我完成了我的网络应用程序的开发,现在打包后我在输出路径中得到以下结构:
是否可以将所有这些文件夹和文件打包到一个war文件中(比如开发人员使用 uber-jar 或 fat-jar < STRONG>)?
我的意思是我只想在目标文件夹中找到{strong>单一战争文件作为maven-package
目标的结果。
如果可能,我还希望我的单个war文件可执行(双击)。
答案 0 :(得分:2)
我认为你并不理解.war
包装的主要观点。你应该把它看作一个与外部世界没有任何关系的独立模块。因此,您可以在不同的系统和不同的Web容器上使用它(如评论中所述,它们是 JBoss , GlassFish , WebSphere )。
所有这些都带来了以下advantages:
答案 1 :(得分:1)
我无法猜测为什么要将整个目标目录转换为单个war文件。
1)是否可以将所有这些文件夹和文件打包成一个文件夹 war文件(就像开发人员用uber-jar或fat-jar做的那样)?我是说我 只想在目标文件夹中使用单个war文件 maven-package目标。
如有任何需要,请修改pom.xml中的maven-package
阶段配置,并将要打包的所有文件/目录添加到WebARchive(WAR)中。
但是,在执行maven包阶段之后,您不再需要目标目录中的目录/文件(除WAR文件,其中包含必要的类,库和资源)。如果是,请在项目的pom文件中添加以下 maven代码段,然后根据需要修改配置部分。
<强>行家-段强>
<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客户端访问应用程序。
Here是一篇很棒的文章,它提供了将apache tomcat应用服务器嵌入到java应用程序中的指导。
希望这可以帮助您实现目标。