maven、maven项目部署
***理解maven项目以及其部署,这篇内容比较对,也比较杂,但是都是个人理解之后,总结出来的,希望对向我们新手们有所帮助。
1.maven的理解
2.maven项目部署,内置tomcat插件部署(war包)
1.maven的理解?
- 对于maven很多网站上都有诠释,我就不粘在这里了,我们只要理解它是用于管理项目的就行。我们需要知道的就是,
- 第一点:maven项目会有自己的一套架构规范,也就是确定的项目目录。
差不多就是这样的项目架构。创建这样的项目目录架构方法有很多,比如idea等开发工具上创建maven项目,命令创建maven项目,甚至可以手动敲出项目目录。重点就是pom.xml文件啦。
第二点:maven提供了很多命令用于系统发开,例如mvn compile,mvn clean,mvn package等。有了这些命令,调试,部署起来就很方便啦,比如说你有个maven项目,完全不在需要开发工具,直接进入项目目录下,一个cmd,mvn package 就能轻松的打包了(前提是要安装配置好maven)。在架构中的target中就能找到打包的文件。jar或者war,然后就可以部署啦(后面说)。
第三点:maven的依赖管理的强大,我就不多说了,免去了手动引入的痛苦。。。
以上是初学者需要对maven的一个简单的理解,什么是maven,哦~原来他就是有着特有的项目架构,并支持命令简化打包。。。
2.maven项目部署,内置tomcat插件部署(war包)?
- 我们都知道普通的web项目部署前呢都是需要编译和打包,然后将编译好的编译文件或者打好的war包放到tomcat的webapp下面,然后启动tomcat就行了。
maven项目其实也是一样的,普通的maven项目也是需要打成war包进行项目部署的。
现在有个问题maven中有tomcat插件,使用插件之后,我们不需要本地tomcat了,直接就可以启动插件tomcat运行项目。
那么现在问题来了,我maven项目含有内置tomcat,那我导出的war是不是不需要tomcat就能部署运行了呢- 不是这样的,导出的war还是需要tomcat才能部署运行的。
那我内置的tomcat插件有何用呢? - 1、可以实现web应用程序的单步调试,只要在web应用的程序中设置断点, 然后在浏览器访问时即可实现单步调试,可以调试command、service、domain、dao,从此我们就可以不用打太多的Log了。不过美中不足的是无法实现jsp中代码的单步调试,但是可以调试jsp编译成的java程序。
- 2、可以实现热部署,java程序修改之后,不用重启应用也不用部署即可看 到修改结果,也就是浏览器那里不用重新登录系统,大大提高调试的效率。
- 3、可以多线程同时调试
简单一句话方便开发。
- 不是这样的,导出的war还是需要tomcat才能部署运行的。
下面简单说下maven项目的打包部署吧。
第一步 项目打包,如果是web项目就是war包。如果是java应用项目就是jar包
-
idea工具打包,先说war包:
ompile 编译,package打包。
导出的包文件都默认在target下,上面说过了。 -
不需要开发工具打包
-
找到项目路径,在该路径下cmd,输入mvn package,打包成功。包也是在target下。
第二步 项目部署。
这个就不多说了,将war包放入tomcat的webapp下,启动tomcat就行了,会自动解压你的war。
还有就是java应用程序打包为jar包(springboot项目除外,它也是web项目,原理其他篇章介绍)。
我们要知道要打出jar包,且要能java -jar ****运行,前提是要求项目中必须有个主类(main),不仅要这样,我们还需要插件设置默认启动类,这样你java -jar ***的时候,才会启动你的启动类。
比如我这项目中有个主类。
然后需要插件设置
<pluginManagement>
<plugins> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
</plugin>
其中HelloWorld 就是我的启动类。
完成这些之后,记得改一个东西。
改为jar,然后就同上述一样打包,最后在target中的就是jar包,
启动jar包,
这样就行了。