有可能打包成单战吗?

时间:2016-07-19 17:19:43

标签: java maven web package war

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

folders

是否可以将所有这些文件夹和文件打包到一个war文件中(比如开发人员使用 uber-jar fat-jar )? 我的意思是我只想在目标文件夹中找到{strong>单一战争文件作为maven-package目标的结果。

如果可能,我还希望我的单个war文件可执行(双击)。

2 个答案:

答案 0 :(得分:2)

我认为你并不理解.war包装的主要观点。你应该把它看作一个与外部世界没有任何关系的独立模块。因此,您可以在不同的系统和不同的Web容器上使用它(如评论中所述,它们是 JBoss GlassFish WebSphere )。

所有这些都带来了以下advantages

  • 轻松测试和部署Web应用程序;
  • 轻松识别已部署应用程序的版本;
  • 所有Java EE容器都支持WAR文件;
  • MVC Structure也支持WAR文件。

答案 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应用程序中的指导。

希望这可以帮助您实现目标。