论坛首页 Java版

Work with Maven:创建项目骨架

浏览 5966 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-04-12 关键字: maven2 mvn web开发
一直用Maven作项目构建,Maven用起来比Ant要方便,起初为了不想在ant的构建脚本上多花精力,选择了Maven,但是后来实践证明,选择是正确的,那么是不是把时间精力省下来了呢,事实证明我并没有因为选择了Maven而节省下多少时间,在构建构建工具多花时间精力是值得的,但Maven给我的回报远远超出我的预期。

Maven能做什么?基本上Ant能做的Maven都能作,且很多地方做得更好。为什么这么说呢,不讲理论了,用事实证明!。Struts2,WebWork2,Spring2,Appfuse2等比较有分量的项目都能看到Maven的身影。另他最大的特点是其依赖包管理系统,这个观念不是新观念了,Debian/Ubuntu,Ruby-Gems都采用类似的思想来管理依赖包/库。

熟悉了Maven2的项目配置文件后,可以不写一行构建脚本,仅仅十几行按部就班的依赖包配置,就可以完成一个完整web项目的编译,测试,打包,清理等任务,但如果想要Maven做得更多,follow me...

先从一个最简单的web项目开始,假定这个项目名称就叫做myweb,JDK1.5以上,Linux系统(XP上使用方法是一样的,只不过XP的cmd太烂了,没有Linux的console好用,或者我太菜,用不来XP高深的cmd命令行界面)。
1)  安装Maven,安装过程略,简单的说就跟你装ant一样,官方网站http://maven.apache.org
2)  建立项目骨架,开一个Linux的console命令行窗口,输入以下命令:
java 代码
  1. mvn archetype:create \  
  2. -DgroupId=com.mycompany.webapp \  
  3. -DartifactId=myweb \  
  4. -DarchetypeArtifactId=maven-archetype-webapp  

简单解释一下:
archetype  是一个内建插件,他的create任务将建立项目骨架
archetypeArtifactId   项目骨架的类型

可用项目骨架有:

* maven-archetype-archetype
* maven-archetype-j2ee-simple
* maven-archetype-mojo
* maven-archetype-portlet
* maven-archetype-profiles (currently under development)
* maven-archetype-quickstart
* maven-archetype-simple (currently under development)
* maven-archetype-site
* maven-archetype-site-simple, and
* maven-archetype-webapp

groupId  项目的java包结构,可修改
artifactId  项目的名称,生成的项目目录也是这个名字,可修改

在当前目录下会生成一个myweb文件夹,这个文件就是我们的项目文件夹了

3)  补全项目的目录结构,因为生成的项目骨架是个webapp最小化骨架结构,与Maven的标准项目布局还有差距,
Maven标准项目布局结构见http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
其实就是要自己手动建立几个目录而已,下面一条命令全部搞定
java 代码
  1. mkdir -p src/{main/java/com/mycompany/webapp,test/java/com/mycompany/webapp,test/resources}  

4)  添加一个嵌入式servlet/jsp容器jetty6,用nio重写过的嵌入式服务器,开发和调试web项目非常方便,这里需要编辑唯一的配置文件pom.xml,其实并不难
xml 代码
 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <modelVersion>4.0.0modelVersion>  
  4.   <groupId>com.mycompany.webappgroupId>  
  5.   <artifactId>mywebartifactId>  
  6.   <packaging>warpackaging>  
  7.   <version>1.0-SNAPSHOTversion>  
  8.   <name>myweb Maven Webappname>  
  9.   <url>http://maven.apache.orgurl>  
  10.   <dependencies>  
  11.     <dependency>  
  12.       <groupId>junitgroupId>  
  13.       <artifactId>junitartifactId>  
  14.       <version>3.8.1version>  
  15.       <scope>testscope>  
  16.     dependency>  
  17.   dependencies>  
  18.   <build>  
  19.     <finalName>mywebfinalName> 
  20.    
  21.     <plugins>  
  22.       <plugin>  
  23.         <groupId>org.mortbay.jettygroupId>  
  24.         <artifactId>maven-jetty-pluginartifactId>  
  25.       plugin>  
  26.     plugins> 
  27.    
  28.   build>  
  29. project>  

5)  运行测试
java 代码
  1. mvn jetty:run  
在网络正常联通的情况下,maven会自动下载所有的jar依赖包,然后启动jetty6,可以在浏览器中访问http://localhost:8080/myweb/
Jetty6已经启动并显示了经典到掉渣的“Hello World!”
现在可以修改src/main/webapp/index.jsp,然后在浏览器刷新看效果了,最简单的web骨架就这样诞生了
停止jetty6的命令是Ctrl+C

之后,可以在pom.xml中添加spring,hibernate/ibatis,struts/struts2/webwork2以及report,xdoclet,hibernate代码生成工具,DbUnit等等...(今天写道这里,以后在写吧)

推荐两篇文章:
http://www.blogjava.net/calvin/archive/2006/03/19/36098.html
http://www.ibm.com/developerworks/cn/opensource/os-maven2/
   
最后更新时间:2007-08-22
恩,您写的很不错,但我个问题想问您:
我在用MAVEN命令创建项目时总是报BUILD ERROR错:
The pulgin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist or valid version could be found

但我的MAVEN确实配置成功了,JDK什么都配了,这是为什么呢?谢谢!~
  • E0e75270-9f22-435e-9c41-e381b573bdf2-thumb
  • 描述: 这是我建项目时报的错误页面,请帮忙看看吧!~谢谢了!~
  • 大小: 57.3 KB
   
0 请登录后投票
最后更新时间:2007-08-23
还有这个问题
http://www.javaeye.com/my_topic/115389


   1. D:\cfly\workspace\profile>mvn jetty:run 
   2. [INFO] Scanning for projects... 
   3. [INFO] Searching repository for plugin with prefix: 'jetty'. 
   4. [INFO] ------------------------------------------------------------------------ 
   5. [ERROR] BUILD ERROR 
   6. [INFO] ------------------------------------------------------------------------ 
   7. [INFO] The plugin 'org.apache.maven.plugins:maven-jetty-plugin' does not exist or no valid version could be found 
   8. [INFO] ------------------------------------------------------------------------ 
   9. [INFO] For more information, run Maven with the -e switch 
  10. [INFO] ------------------------------------------------------------------------ 
  11. [INFO] Total time: < 1 second 
  12. [INFO] Finished at: Wed Aug 22 23:40:55 CST 2007 
  13. [INFO] Final Memory: 1M/4M 
  14. [INFO] ------------------------------------------------------------------------
   
0 请登录后投票
最后更新时间:2007-08-23
To kayzhan: Delete the directory ~/.m2/repository, and try again. On Windows, that would be C:\Documents and Settings\username\.m2\repository.

to cly:Have you config the jetty-plugin in the pom.xml's bulid element? I think maven will not download it automatically if you didn't config it
   
0 请登录后投票
最后更新时间:2007-08-27
To kayzhan:
seems the remote repo site missed the 1.05 snapshot jar file.you need to change the pom.xml manually.
   
0 请登录后投票
最后更新时间:2007-09-10
TO:remy 真是抱歉!~这段日子都没来,我把 C:\Documents and Settings\username\.m2\repository删了,试了,还是报一样的错。
   
0 请登录后投票
最后更新时间:2007-09-10
To:teclogid:很抱歉,我实在不太明白您的意思,我根本就办法创建成功项目,怎么去改pom.xml文件呢?还是我理解错了您的意思。请大家能再帮忙想想办法吗,这问题已经困扰我一两个月了。
   
0 请登录后投票
最后更新时间:2007-09-10
kayzhan 写道
TO:remy 真是抱歉!~这段日子都没来,我把 C:\Documents and Settings\username\.m2\repository删了,试了,还是报一样的错。


首先,你能保证你的maven安装成功了么?可以试着run下mvn -version
然后,在.m2目录下,应该有个setting.xml file
the content:
<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <localRepository>C:\Documents and Settings\remy.wang\.m2\repository</localRepository>
  <mirrors>
    <mirror>
<mirrorOf></mirrorOf>
<url></url>
      <id></id>
<name></name>    
    </mirror>
  </mirrors> 
</settings>

如果还不行,删掉所有的,重新装下maven,
   
0 请登录后投票
最后更新时间:2007-09-10
我是配置的maven2,mvn -v是可以出来版本2.6的,我已经重新配置了好几次,试了3个版本,从4到6。但还是不行,不知道是否跟我使用的代理服务器有关,但我不知道怎么设代理服务器,在网上查的资料也没有具体写清楚怎样设代理的。
  <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>8080</port>
      <nonProxyHosts>local.net,some.host.com</nonProxyHosts>
    </proxy>
我不知道username和password到底指的是什么!您能告诉我吗?
   
0 请登录后投票
最后更新时间:2007-09-11
差不多可以确定你是因为用了代理导致你的maven不能连接网络,setting.xml文件正是用来配置代理的
你用代理上网的时候,username 和password正是代理服务器提供给你的验证信息,你应该知道的

  你既然能上网,证明你已经用了这个用户名和密码
  这篇文章可以帮助你设置,也是javaeye上的

  http://freeman983.javaeye.com/blog/112571

kayzhan 写道
我是配置的maven2,mvn -v是可以出来版本2.6的,我已经重新配置了好几次,试了3个版本,从4到6。但还是不行,不知道是否跟我使用的代理服务器有关,但我不知道怎么设代理服务器,在网上查的资料也没有具体写清楚怎样设代理的。
  <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>8080</port>
      <nonProxyHosts>local.net,some.host.com</nonProxyHosts>
    </proxy>
我不知道username和password到底指的是什么!您能告诉我吗?
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐