首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能不能打包成一场战争?

能不能打包成一场战争?
EN

Stack Overflow用户
提问于 2016-07-19 17:19:43
回答 2查看 675关注 0票数 1

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

是否可以将所有这些文件夹和文件打包到一个war文件中(就像开发人员使用uber-jar胖jar所做的那样)?我的意思是,我只希望目标文件夹中有一个单一war文件,这是maven-package目标的结果。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-20 06:21:35

我想你只是不明白.war包装的主要思想。你应该把它看作一个独立的模块,它与外部世界没有任何关系。因此,您可以在不同的系统和不同的web容器中使用它(正如注释中提到的,它们是JBoss、GlassFish、WebSphere)。

所有这些都会带来以下优势

  • 易于测试和部署web应用程序;
  • 易于识别已部署应用程序的版本;
  • 所有Java容器都支持WAR文件;
  • MVC结构还支持WAR文件。
票数 2
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
<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应用程序中的指导。

希望这能帮助你实现你的目标。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38464761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档