现在的位置: 首页 > 综合 > 正文

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

2013年12月11日 ⁄ 综合 ⁄ 共 7334字 ⁄ 字号 评论关闭

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.)

抱歉!评论已关闭.