关于artifact、war、jar、war exploded

intellij中Project Structure中的artifacts到底是什么?

官方定义是这样的:

An artifact is an assembly of your project assets that you put together to test, deploy or distribute your software solution or its part. Examples are a collection of compiled Java classes or a Java application packaged in a Java archive, a Web application as a directory structure or a Web application archive, etc.

翻译过来就是项目资产的组装?? ,反正我的理解就是打包方式,像jar、war、war exploded的ar两个字母就是artifact的意思,就是说编译后的Java类,Java应用,Web应用等资源,要用来测试或者部署的时候,该如何打包。某个module有了 Artifacts 就可以部署到应用服务器中了(比如在部署步骤中选择的就是artifacts里面的artifact,当然也可以选择external source)。

jar和war又有什么区别呢?

定义区别:

jar:Java ARchive,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便分发Java平台应用软件或库;

war:Web application ARchive,一种JAR文件,其中包含用来分发的JSP、Java Servlet、Java类、XML文件、标签库、静态网页(HTML和相关文件),以及构成Web应用程序的其他资源;

exploded:在这里你可以理解为展开,不压缩的意思。也就是war、jar等产出物没压缩前的目录结构。建议在开发的时候使用这种模式,便于修改了文件的效果立刻显现出来。

使用场景区别

可参考这篇博客↓

项目为什么要使用jar或war进行打包发布?区别是什么?

为什么javaweb部署到服务器上的url默认为project文件名_war_exploded?

因为intellij默认帮我们设置的artifact是exploded类型的,那么改artifact的name就是project文件名:war exploded,那applicant context(也就是部署的目录,即项目根目录的路径)就默认为project文件名_war_exploded,当然这个可以自由改动。

javaweb中的output path已经设置成了WEN-INF下面的classes文件夹,那么out文件夹到底是用来干嘛的?

用来生成artifact,artifact目录下面默认是只有一个project文件名_war_exploded文件夹的,里面的结构和内容都与web(或者web-content?)文件夹一致。
但是也可以手动生成一个war包,这个网上也有教程,比如这里,然后部署,设置applicant context,然后访问。或者复制到tomcat的webapps文件夹下面,启动电脑上的tomcat服务器来访问。

关于war包的更详细信息,可以参考这个博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值