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