tomcat7-maven-plugin插件
1. 不通过外部的tomcat 直接将tomcat核心内嵌在项目中,tomcat7:run 命令就可以启动项目,可以直接访问 localhost:8080/Demo
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>7.0.47</version>
<scope>provided</scope>
</dependency>
</dependencies>
2. 热部署(tomcat是活的) tomcat7:deploy 命令就可以将项目发布到活着的tomcat下 再次发布使用命令 tomcat7:redeploy
tomcat-user.xml
<role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="root" password="root" roles="manager-gui,manager-script"/>
pom.xml
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<username>root</username>
<password>root</password>
</configuration>
</plugin>
cargo-maven-plugin插件
1.部署到本地Web容器
1.1 standalone模式
在standalone模式,Cargo会从Web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的时候,这个目录都会被清空,所有配置被重新生成
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.4.9</version> <configuration> <container> <containerId>tomcat7x</containerId> <home>/usr/local/devtools/apache-tomcat-7.0.55</home> </container> <configuration> <type>standalone</type> <home>${project.build.directory}/tomcat7x</home> <properties> <!-- 更改监听端口 --> <cargo.servlet.port>8088</cargo.servlet.port> </properties> </configuration> </configuration> </plugin>
然后用mvn cargo:run启动,关于cargo:run于cargo:start有什么区别,后续会讲到。
1.2 existing模式
在existing模式下,用户需要指定现有的web容器配置目录,然后Cargo会直接使用这些配置并将应用部署到其对应的位置
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.4.9</version> <configuration> <container> <containerId>tomcat7x</containerId> <home>/usr/local/devtools/apache-tomcat-7.0.55</home> </container> <configuration> <type>existing</type> <home>/usr/local/devtools/apache-tomcat-7.0.55</home> </configuration> </configuration> </plugin>
然后运行cargo:run之后在对应的tomcat的webapps目录下能够看到被部署的应用
2.部署到远程Web容器
这里注意在远程部署模式下,Container元素的type子元素的值必须为remote,如果不指定,Cargo会默认使用installed,并寻找对应的容器安装目录或者安装包,一般我们远程部署的服务器上都有设定好的web容器了,并不需要再区安装。
pom.xml
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.4.9</version> <configuration> <container> <containerId>tomcat7x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.tomcat.manager.url>http://localhost:8080/manager/text</cargo.tomcat.manager.url> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>password</cargo.remote.password> </properties> </configuration> <deployables> <deployable> <groupId>io.steveguoshao</groupId> <artifactId>webapp</artifactId> <type>war</type> <properties> <context>/${project.artifactId}</context> </properties> <!-- 可选:验证是否部署成功 --> <pingURL>http://localhost:8080/webapp</pingURL> <!-- 可选:验证超时时间,默认是120000 毫秒 --> <pingTimeout>60000</pingTimeout> </deployable> </deployables> </configuration> <executions> <execution> <id>verify-deployer</id> <phase>install</phase> <goals> <goal>deployer-redeploy</goal> </goals> </execution> <execution> <id>clean-deployer</id> <phase>clean</phase> <goals> <goal>deployer-undeploy</goal> </goals> </execution> </executions> </plugin>
在tomcat7的conf/tomcat-users.xml中增加角色和用户
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <user username="admin" password="password" roles="admin-gui,manager-gui,manager-script,manager-status"/>
另外还有一点要注意的是url,tomcat7是
http://localhost:8080/manager/text
而tomcat6是
http://localhost:8080/manager/html
配置好之后就可以运行mvn cargo:redeploy 来部署应用了(必须保证tomcat是running状态,否则没法部署),如果容器中已经部署的当前应用,Cargo会先卸载掉原来的应用,然后再重新部署。
mvn cargo:start命令完成WAR包部署后,启动服务器,然后会将服务器立即关掉;
mvn cargo:run命令完成WAR包部署后,启动服务器,直到你Ctrl+C将服务器关掉
maven help插件
Maven Help 插件有四个目标。前三个目标是—— active-profiles , effective-pom 和effective-settings —— 描述一个特定的项目,它们必须在项目的目录下运行。 最后一个目标—— describe ——相对比较复杂,展示某个插件或者插件目标的相关信息。
help:active-profiles
|
列出当前构建中活动的Profile(项目的,用户的,全局的)
|
help:effective-pom
|
显示当前构建的实际POM,包含活动的Profile
|
help:effective-settings
|
打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的配置
|
help:describe -Dplugin=groupId:artifact[:version]
-Dfull
|
描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件的 groupId 和 artifactId
你可以传入插件的前缀(如-Dplugin=help 插件就是 maven-help-plugin )
|
$ mvn help:describe -Dplugin=compiler -Dmojo=compile -Dfull