[Java] Maven2 小记

这两天心血来潮,忽然思考到些多语言开发中遇到的问题 —— 软件设计发展到今天,从开发效率上来说应该来说比过去要快很多了,特别是各种辅助工具的出现,在我接触的语言周边,我认为能称得上脍炙人口的包括 Perl 语言的 CPAN,PHP 的 Pear/Pecl,Ruby 的 rails,当然还有 Java 的 Ant/Maven 工具等。石头认为,这些类库或者工具的发展不仅给开发人员节省了宝贵的开发时间,大大缩短了“创新周期”,应该能称之为人类智慧的结晶,今天来介绍一下 Maven2 的常见用法,以供初学者参考。

下载地址:http://maven.apache.org/download.html
插件集合:http://maven.apache.org/plugins/index.html
Eclipse插件安装地址:http://m2eclipse.sonatype.org/update/


Maven2 主要配置文件:pom.xml 和 settings.xml。
POM 是 Maven 的核心对象模型,对于项目,一般只需要 pom.xml 就行了。settings.xml配置在Maven2中存在两种级别(我们通常在全局级的 setting.xml 里面重新设置 maven 的 repository 目录):
A.用户级:针对操作系统登录用户而言。一般在$home/.m2/,对于windows用户,就是目录:C:/Documents and Settings/username/.m2/settings.xml。
B.全局级:一般在%M2_HOME%/conf/settings.xml,M2_HOME是Maven2的根目录环境变量名。

一般常用命令:
# mvn -h ; 帮助
# mvn -v ; 版本信息

项目常用命令:
# mvn archetype:create -DgroupId=com.mycompany -DartifactId=my-app ; 创建 java 项目 my-app
# cd my-app ; 以下命令必须依赖项目目录中的 pom.xml
# mvn compile ; 编译源代码
# mvn test-compile ; 编译测试代码
# mvn test ; 运行测试案例
# mvn site ; 产生 html 文档
# mvn package ; 打包项目 生成 jar
#
mvn install ; 在本地 Repository 中安装 jar
# java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.App ; 执行结果(也可 mvn exec:java -Dexec.mainClass=com.james.App),注意这里指定 classpath 可根据具体要求改变测试方法,比如修改 $CLASSPATH 或者在 META-INF/MENIFEST.MF 中指定 Main-Class: com.mycompany.App
# mvn clean ; 清除 target 生成文件

如果是 web 项目可以尝试以下格式命令:
# mvn archetype:create -DgroupId=com.mycompany  -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

 

提一下,可用项目骨架有:
* 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

 

然后就是补全项目的目录结构(比如 main/java/com/mycompany, test/java/com/mycompany),因为生成的项目骨架是个webapp最小化骨架结构,与Maven的标准项目布局还有差距,Maven标准项目布局结构见 http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

 

有意思的是,在 Maven2 的使用过程中,我们可以处处体验到软件工程生命周期的概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段如下:

validate: 验证工程是否正确,所有需要的资源是否可用。
compile: 编译项目的源代码。
test-compile: 编译项目测试代码。
test: 使用已编译的测试代码,测试已编译的源代码。
package: 已发布的格式,如 jar,将已编译的源代码打包。
integration-test: 在集成测试可以运行的环境中处理和发布包。
verify: 运行任何检查,验证包是否有效且达到质量标准。
install: 把包安装在本地的 repository 中,可以被其他工程作为依赖来使用
deploy: 在整合或者发布环境下执行,将最终版本的包拷贝到远程的 repository,使得其他的开发者或者工程可以共享。
generate-sources: 产生应用需要的任何额外的源代码,如 xdoclet。
如果要执行项目编译,那么直接输入 mvn compile 即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行 mvn test 时,会先运行 mvn test-compile,然后才是mvn test。因为maven2 是有生命周期这一概念的,所以如果你执行package,相应的以前步骤,如compile,test等都会自动执行。

Maven 程序第一次执行会比较慢,需要从 maven2 远程库中下载所有的文件到本地。如果你的本地没有相应的依赖包,则每次maven都会去远程下载,所以配置一个镜像库就比较重要了,这方面的资料可以查看 http://www.javaeye.com/topic/143426,另外对 Maven+Jetty 组合感兴趣的朋友可以查看一下链接 http://www.blogjava.net/alwayscy/archive/2007/05/19/118584.html

 

补充:

如果遇到“-source1.3 中不支持注释”此类问题可以在 pom.xml 中指定 compiler 版本来修正:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.5</source>
    <target>1.5</target>
  </configuration>
</plugin>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值