IDEA创建Maven工程;部署Web项目运行到tomcat下
Properties
Maven总共有6类属性,内置属性、POM属性、自定义属性、Settings属性、java系统属性和环境变量属性;
relativePath
relativePath:
1)指定查找该父项目pom.xml的(相对)路径。默认顺序:relativePath > 本地仓库 > 远程仓库
2)没有relativePath标签等同…/pom.xml, 即默认从当前pom文件的上一级目录找
3)表示不从relativePath找, 直接从本地仓库找,找不到再从远程仓库找
maven- compiler-plugin
Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。
Maven 命令
- clean 清除编译
- compile 编译
- test 编译并测试
- install 打包并发送到本地仓库
- package 只是打成jar包,并不会发送到本地仓库
sourceDirectory
<packaging>war</packaging>
<!--项目产生的构件类型,例如jar、war、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 -->
jar代表生成jar文件,war代表打包的是war文件,意思就是说是一个web程序
<!--项目的名称, Maven产生的文档用 -->
<name>mypro02 Maven Webapp</name>
<!--项目主页的URL, Maven产生的文档用 -->
<url>http://maven.apache.org</url>
清除与编译
clean清除编译,compile编译,test编译并测试,install 打包并发送到本地仓库,package 只是打成jar包,并不会发送到本地仓库
webcontent 目录 和 webapp 两个目录什么区别 ?
http://bbs.csdn.net/topics/390686693
因为你新建的时候选择了war,在最后又自己填写了发布路径为webapp作为路径,所以maven根据自己的模板mavne-archetype-webapp生产的工程 所以满足了maven web工程结构要求,自然就不会有了,如果你开始你没有选择mavne-archetype-webapp,而是直接就建立了maven工程那么在转换成web工程时是web插件转化的,所以会出现所谓的webContent,其实这样不符合maven web工作结构,那个可以复制到webapp中然后删除即可。
关于artifact、war、jar、war exploded
https://blog.csdn.net/weixin_45783996/article/details/107967737
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服务器来访问。
链接:https://blog.csdn.net/weixin_45783996/article/details/107967737
其他
在eclipse jee中创建Maven project并且转换为Dynamic web project http://www.zuidaima.com/blog/1618162161323008.htm
参考资料
|