Loading...

java .net

2010年11月15日

最近在学习如何使用maven,做了一个demo(基于S2S整合),总结一下与大家分享,期待与大家讨论以期快速进步。

一、maven介绍

1、maven是什么

http://maven.apache.org/
官方解释:Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

2、使用maven有什么好处,解决什么问题

jar统一管理了:

如果建立了一个本地的jar仓库,那么所有人都是从仓库里面下载jar,拷贝项目时只需要copy几K的源码即可!其次,依然是仓库,使得每个人的jar版本都是一致的,不会出现因为版本不同,引起的莫名其妙的错误。
项目的自动化:

只需要mvn package命令,在eclipse里面,看run里面,只需要选择就行了!它会自动的从编译,测试开始,一直到打包,自动的运行,保证你的包没有问题。

我们在做多个不同的Java项目时,每个项目所用到的库文件基本都是大同小异的,通常的做法是每个项目下面都会复制一份这些库文件,甚至会把这些库文件都提交到vss上去,这样带来的问题不仅是增大了项目占用的硬盘空间,而且也使包管理很混乱。

我们可以这样查看jar包的依赖关系,是不是很爽?!
image

还可以单元测试覆盖率报表:

image

2、helloword

1、下载Maven 附件中的maven3.jar 解压到任意目录

2、安装eclipse插件m2eclipse

方式一:在线安装 更新地址是:http://m2eclipse.sonatype.org/sites/m2e
方式二:本地安装 help-->install new softeware-->add-->name填写maven-->archive..-->jar:file:/../m2e.zip!/-->ok
安装完成重启eclipse,在Window-->Preferences-->Maven下配置

image

禁用eclipse启动时更新maven index 主要是每次eclipse启动时都更新很烦人

image

添加自己的maven

3、新建maven项目

按照下图步骤

image

  • groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp.
  • artifactId定义了当前Maven项目在组中唯一的ID,groupId为com.googlecode.myapp的例子中,你可能会为不同的子项目(模块)分配artifactId,如myapputil、myappdomain、myappweb等。
  • version指定了项目当前的版本——1.0SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.0、1.1SNAPSHOT、1.1、2.0等。
  • name元素声明了一个对于用户更为友好的项目名称

点击Finish完成

4、maven项目结构

下图为基于maven项目结构,这里跟我们以前的项目结构很不一样,以前的项目结构约定俗成的只有两块 一个src 一个webRoot,当然这些都可以随意配置,比如WebRoot有的叫WebContent

image
这里maven倡导约定优于配置,maven的约定就是以下目录结构
src/main/java 下存放java类
src/main/webapp 下存放页面文件(需要手动创建)
src/main/resources 下存放资源文件
src/test/java 下存放单元测试代码
src/test/resources 下存放测试资源文件

5、添加jar包

只需维护pom.xml
比如添加struts2-core
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.0.11.2</version>
</dependency>

我在172.20.66.230上部署了一个maven仓库,访问地址http://172.20.66.230:8081/nexus/

maven会根据pom.xml中的配置访问230的仓库下载对应的jar source 以及doc,下载到哪?这要看maven3/conf/settings.xml 55:

<localRepository>F:/Maven3/repository</localRepository>

6、编写代码

附件中有一个struts2+spring 的demo,解压然后import eclipse

在项目名上右键 run as -->Run Configurations

image

按图配置,点击Run即可。浏览器中访问http://localhost:8080/MavenSSH/

Maven运行的生命周期

  • 复制src/main/resources资源文件到输出目录

  • 编译src/main/java下的源代码

  • 复制src/test/resources下的测试用资源文件到测试输出目录

  • 编译src/test/java下的测试用例

  • 运行测试用例

  • 打包生成

===========================

  • 以上是一个简单的例子,只是用它获取依赖的jar包 。maven还有很多诸如项目管理方面的功能,比如文档编制、发布管理、配置管理...

  • 第一个次运行项目会比较慢,因为要下载jar包。

  • MavenSSH.rar是一个struts2与spring集成的例子,页面用到了sitemesh div+css 也值得学习

  • 项目debug是运行在jetty(类似于tomcat的容器)中。

posted @ 2011-04-18 16:09 猪 阅读(1319) | 评论 (5)编辑 收藏

如果部署GAE时正在upload files时退出,下次部署时会报错

Another transaction by user is already in progress for this app and major version. That user can undo the transaction with appcfg.py's "rollback" command

 

找到eclipse中的GAE SDK目录

如:D:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle.1.3.8_1.3.8.v201010161055\appengine-java-sdk-1.3.8\bin

 

执行命令

appcfg.cmd rollback 后面跟gae项目war所在目录

如 appcfg.cmd rollback D:/spring/eclipse_workspace/taobaoke/war

 

执行:

********************************************************
Warning: Future versions of the Dev App Server will require Java 1.6 or later. P
lease upgrade your JRE.
********************************************************
Reading application configuration data...
2010-11-15 9:34:23 com.google.apphosting.utils.config.AppEngineWebXmlReader read
AppEngineWebXml
信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/ap
pengine-web.xml
2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
adConfigXml
信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/we
b.xml
2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
adConfigXml
信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/cr
on.xml
Beginning server interaction for taokeapp...
0% Rolling back the update.
Success.
Cleaning up temporary files...

posted @ 2010-11-15 09:55 猪 阅读(418) | 评论 (0)编辑 收藏

公告

希望有一天

我能用鼠标双击我的钱包

然后选中一张100元

按住“ctrl+c”

接着不停的“ctrl+v”

嘻嘻~~~笑醒~~~



导航

<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(6)

随笔分类(102)

随笔档案(398)

文章分类

文章档案(10)

有趣网络

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜