web项目的目录结构
war文件的目录结构: web项目的maven目录结构:
ps : 在eclipse里用maven的archetype-webapp创建的项目的有些source-folder是没有的需要手动创建,并且需要更改其output目录。并需要做响应的配置。
jetty-maven-plugin
有过开发经验的都知道,修改代码->重新部署非常的耗费时间,maven通过jetty-maven-plugin能够周期性的侦测项目内容变化,然后自动更新项目内容至jetty容器里。
使用方法:
1、引入依赖
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.1.0.RC1</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppConfig>
<contextPath>/account</contextPath>
</webAppConfig>
</configuration>
</plugin>
scanIntervalSeconds: 扫描项目内容变化的时间间隔,如果不配置默认为0,表示不扫描。
contextPath:表示项目部署后的context path, 本例子中访问的路径就是 http://ip:port/account,默认端口是8080,但是也可通过 jetty.port更改端口:mvn jetty:run -Djetty.port=9090
2、修改settings.xml文件
jetty-maven-plugin 不是官方插件,所以需要在settings里配置pluginGroup, 才能使用简化的maven命令: mvn jetty:run
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
使用cargo实现自动部署
与jetty-maven-plugin应用与不同的场景,jetty-maven-plugin主要用于日常开发、测试。而cargo则服务于自动化部署。
两种模式:standalone,existing
standalone模式
cargo会从容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建目录都会被清空,所有配置重新生成;
1、 配置依赖:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>tomcat7x</containerId>
<home>D:\ProgramFiles\apache-tomcat-7.0.82</home>
</container>
<configuration>
<type>standalone</type>
<home>${project.build.directory}/tomcat7</home>
</configuration>
</configuration>
</plugin>
containerId:表示容器的类型,jetty,weblogic,JBoss等等,可以参考:https://codehaus-cargo.github.io/cargo/Maven2+plugin.html#Maven2plugin-gettingstarted
container.home: 表示本地容器的安装路径
configuration.type: 表示安装类型
configuration.home: 输出入路径,也就是复制容器配置存放的路径。
2、修改settings文件
<pluginGroups>
<pluginGroup>org.codehaus.cargo</pluginGroup>
</pluginGroups>
执行: mvn cargo:run
默认端口是8080,但是也可以通过配置 更改端口:
existing模式
直接部署项目至本地容器的应用目录下:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>tomcat7x</containerId>
<home>D:\ProgramFiles\apache-tomcat-7.0.82</home>
</container>
<configuration>
<type>existing</type>
<home>D:\ProgramFiles\apache-tomcat-7.0.82</home>
</configuration>
</configuration>
</plugin>
configuration.home 就是容器的安装目录
部署至远程web容器
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<container>
<containerId>tomcat7x</containerId>
<!--<home>D:\ProgramFiles\apache-tomcat-7.0.82</home> -->
<type>remote</type>
</container>
<configuration>
<type>runtime</type>
<!--<home>${project.build.directory}/tomcat7</home>-->
<properties>
<cargo.remote.username>admin</cargo.remote.username>
<cargo.remote.password>123456</cargo.remote.password>
<cargo.tomcat.manager.url>http:127.0.0.1:8080/manager</cargo.tomcat.manager.url>
</properties>
</configuration>
</configuration>
</plugin>
container.type: 这里一定要填remote
configuration.type: runtime, 表示既不使用独立的容器配置,也不使用现有的容器配置,而是依赖于一个已经运行的容器。
configuration.propreties:申明一些容器热部署相关的配置,对不同的容器来说配置不一样。
然后运行 mvn cargo:deploy