使用maven构建WEB应用

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

猜你喜欢

转载自my.oschina.net/u/2464465/blog/1605309