您的位置:首页 > 运维架构 > Tomcat

mvn的使用和如何在使用外部tomcat启动maven项目

2011-12-11 10:59 681 查看
mvn使用

==maven快速入门==

*5分钟无师自通maven:http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

==maven常用命令==

*创建maven工程

<source lang="xml">

mvn archetype:create \

-DarchetypeGroupId=org.apache.maven.archetypes \

-DgroupId=com.mycompany.app \

-DartifactId=my-app

</source>

一旦你执行了这个命令,你将会发现在文件目录中发生了一些变化。首先,你将会发现一个新的文件夹my-app已经被创建,并且这个文件夹中包含了一个名称为pom.xml的文件:

<source lang="xml">

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>

<artifactId>my-app</artifactId>

<packaging>jar</packaging>

<version>1.0-SNAPSHOT</version>

<name>Maven Quick Start Archetype</name>

<url>http://maven.apache.org</url>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

</project>

</source>

*编译项目

将当前目录切换到pom.xml所在的目录,并且执行以下的命令编译maven应用程序:

<source>

mvn compile

</source>

在dos界面执行了以上命令之后,界面上将显示以下内容:

<source>

[INFO] ----------------------------------------------------------------------------

[INFO] Building Maven Quick Start Archetype

[INFO] task-segment: [compile]

[INFO] ----------------------------------------------------------------------------

[INFO] artifact org.apache.maven.plugins:maven-resources-plugin: \

checking for updates from central

...

[INFO] artifact org.apache.maven.plugins:maven-compiler-plugin: \

checking for updates from central

...

[INFO] [resources:resources]

...

[INFO] [compiler:compile]

Compiling 1 source file to <dir>/my-app/target/classes

[INFO] ----------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ----------------------------------------------------------------------------

[INFO] Total time: 3 minutes 54 seconds

[INFO] Finished at: Fri Sep 23 15:48:34 GMT-05:00 2005

[INFO] Final Memory: 2M/6M

[INFO] ----------------------------------------------------------------------------

</source>

如果你第一次执行这个命令,maven将会需要下载所有的补丁和相关的依赖到本来完成这个命令的操作。如果你重新执行这个命令,mavne将不需要去重新下载这些依赖的包文件。<br>

正如你所见到的,编译之后的class将会输出到${basedir}/target/classes 这个文件夹,这个是在maven的默认输入目录,如果你想要更改这个输出目录,只需要到pom.xml配置一下这个输出目录就行了<br>

使用maven编译是非常方便的事,以前你或许使用过ant来编译java程序,你需要在build.xml中设置很多参数,而现在用mavne编译项目,这些额外的设置都不需要了。

*测试项目

现在你已经知道如何编译你的java源代码了并且你已经为你的代码写了几个单元测试类,因此你希望编译代码并且运行单元测试。<br>

执行以下命令<br>

<source>

mvn test

</source>

执行了之后,会输出一下内容:

<source>

[INFO] ----------------------------------------------------------------------------

[INFO] Building Maven Quick Start Archetype

[INFO] task-segment: [test]

[INFO] ----------------------------------------------------------------------------

[INFO] artifact org.apache.maven.plugins:maven-surefire-plugin: \

checking for updates from central

...

[INFO] [resources:resources]

[INFO] [compiler:compile]

[INFO] Nothing to compile - all classes are up to date

[INFO] [resources:testResources]

[INFO] [compiler:testCompile]

Compiling 1 source file to C:\Test\Maven2\test\my-app\target\test-classes

...

[INFO] [surefire:test]

[INFO] Setting reports dir: C:\Test\Maven2\test\my-app\target/surefire-reports

-------------------------------------------------------

T E S T S

-------------------------------------------------------

[surefire] Running com.mycompany.app.AppTest

[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0 sec

Results :

[surefire] Tests run: 1, Failures: 0, Errors: 0

[INFO] ----------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ----------------------------------------------------------------------------

[INFO] Total time: 15 seconds

[INFO] Finished at: Thu Oct 06 08:12:17 MDT 2005

[INFO] Final Memory: 2M/8M

[INFO] ----------------------------------------------------------------------------

</source>

需要注意的几点:<br>

*maven会下载更多的依赖到本地仓库里面来。这些是执行test过程中maven需要的plugin。

*在执行编译和执行执行test之前,maven需要将所有的代码都重新编译过。

*将本地的包部署到仓库中

==结合eclipse使用maven==

===首先你得准备好你的开发环境===

确定java,maven,svn都在本地安装,并且将它们的执行命令脚本已经加入到PATH中

===在eclipse中安装m2eclipse插件===

工作需要,必须要使用maven2。 eclipse版本:eclipse-jee-ganymede-SR2-win32<br>

参考文档地址:http://docs.codehaus.org/display/M2ECLIPSE/Installation+Requirements<br>

按照Installation Requirements 安装m2eclipse前要必须暗装 其他几个插件

(JDK WTP AJDT (Optional ) Subclipse (Optional ) Subversive (Optional)

Mylyn (Optional) ),Optional这个意思是不是可选项?

我选用的eclipse版本是eclipse-jee-ganymede-SR2-win32的,这个文档中的几个插件基本都集成了,所以不用再次安装了,直接进入安装m2eclipse阶段:

m2eclipse dev update site http://m2eclipse.sonatype.org/update-dev/
然后,等待安装,自动询问是否重启,重启eclipse后,等待index索引的更新,这步是个漫长的等待,我等了近10分钟。更新完后,即安装成功。

== 利用maven卡发web项目 ==

==== '''如何创建一个web项目呢?''' ====

*下面创建一个简单的web 项目

<source lang="xml">mvn archetype:create \

-DarchetypeGroupId=org.apache.maven.archetypes \

-DarchetypeArtifactId=maven-archetype-webapp \

-DgroupId=com.mycompany.app \

-DartifactId=my-webapp</source>

注意: 创建成功后,可以发现所创建的项目中的main文件夹中,多了一个webapp的文件夹。

项目生成的pom.xml中<source lang="xml"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>

<artifactId>my-webapp</artifactId>

<packaging>war</packaging>

<version>1.0-SNAPSHOT</version>

<name>my-webapp Maven Webapp</name>

<url>http://maven.apache.org</url>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<finalName>my-webapp</finalName>

</build>

</project></source>

注意到这里面的<packaging>war</packaging>,这里告诉了maven 作为war来创建

<source lang="xml">D:\test\my-webapp>mvn package</source>

执行成功之后,可以看到,在生成的target中,创建出了my-webapp.war

<br>

==== 如何把一个web项目发布到eclipse中呢? ====

当然,前题要在eclipse中已经装好了m2eclipse插件了。

首先:将maven2的项目工程转为eclipse工程。<source lang="xml">D:\test\my-webapp>mvn eclipse:eclipse</source>

这里可以查看下工程文件的目录结构的变化。

[[Image:Maven1.jpg]]

其次: 在eclipse中选择File -> Import

[[Image:Maven2.jpg]]

接下来,找到对应的web项目导入进来就可以了。

ps:这里我试了直接进行第二步操作也是可行的。

==== 如何运行导入eclipse的web项目? ====

*''' Tomcat 端的配置'''

建议:把Tomcat中的默认带有实例项目删掉,这样可以提高Tomcat启动时的速度。

对于自己的web项目布置到Tomcat,采用下列方式:

找到Tomcat下 conf 文件夹中的 server.xml。

在<host>的元素标签内,最后的地方,添加<source lang="xml"><Context path="" docBase="D:\test\my-webapp\src\main\webapp"/></source>

这里面项目路径指向web项止的webapp这个目录上。

* '''web项目的编译'''

web项目导入eclipse中了,在Tomcat中的配置也做好了。接下来,要运行这个项目还差着一步,那就是'''compile'''了。

注意看一下执行前后webapp这个目录中的文件结构变化。<source lang="xml">D:\test\my-webapp>mvn war:inplace</source>

发现,在经过编译后,存放的class类型文件的文件夹,还有加载需要的jar包等的。

当然,这里面没有看到加载的jar包,因为这个样例没有配置需要的jar包,今后可以注意下。

* '''web项目的启动'''

OK,一切准备就绪了。下面就是启动,看看是否能正常进行了。

启动Tomcat 中bin下面的startup.bat文件。

在浏览器中写入地址<source lang="xml">http://localhost:8080/index.jsp</source>

回车下,OK ,页面显示 Hello World!

如果成功显示,那么恭喜你了。

==== 如何用eclipse调试web项目 ====

可以说,调试是作为一个开发人员不可必免的一个动作。那么在这样一个由外部Tomcat启动的web项目,应该是如何调试的呢?

*'''Tomcat 端的配置'''

找到Tomcat 中bin下面的catalina.bat。

编辑其中的<source lang="xml">set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"</source>

在这个代码后,追加 <source lang="xml">-Xms256m -Xmx512m -Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,address=9999,suspend=n,server=y</source>

可以注意到这里面有有着一个端口号:9999。

*'''eclipse 端的配置'''

找到Run -> Debug Configurations...<br> [[Image:Maven4.jpg]]

<br>

两边的配置完成后,如果需要debug,点击图中debug按扭,接着就可以正常的调试了。

注意:点击这里面的debug之前,需确认Tomcat已经启动了,否则会提示出错。(错误信息为:Failed to connect to remote VM. Connection refused.)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: