Picses' sky

Picses' sky
posts - 43, comments - 29, trackbacks - 0, articles - 24

使用maven[zz]

Posted on 2007-07-20 22:27 Matthew Chen 阅读(525) 评论(0)  编辑  收藏 所属分类: Build Project
使用maven
2007-02-25 16:38

maven的好处就不多说了,它在项目管理方面比Ant有较多优势。现简要说明一下相关配置和用法。

首先当然是去apache网站去下载了。我下载的是1.0.2解压版,把其解压至D盘(当然这是任意的)。

配置:1. MAVEN_HOME:D:\maven-1.0.2
      2. Path:%MAVEN_HOME%\bin
如图:

这样就配置好了,然后我们任意建一个目录,在命令提示符下进入这个目录,执行如下命令:maven genapp,一路回车,就建立了一个简单的java工程,如何使其变为IDE工具idea支持的工程呢,只要执行maven idea即可。这里需要说明,必须把D:\maven-1.0.2\plugins下的maven-idea-plugin-1.5.jar换为maven-idea-plugin-1.6.jar,不然系统会找不到对应的modul,其实就是找不到对应的JDK。呵呵。其他的一些goal命令,可以慢慢学习。并且在maven.xml中可以扩展自己的goal命令。

怎么让maven输出信息支持中文呢?.在lib目录中找到maven-core-2.0.4.jar在org/apache/maven/messages目录中找到messages_zh_CN.properties文件,把其拷贝到C:/,运行命令提示符,在C:/下执行如下语句:native2ascii messages\messages_zh_CN.properties>out.properties,这样在C盘下就生成了out.properties,把其更名为:messages_zh_CN.properties,把其拷贝到maven.jar文件中即可。这样maven的输出信息就不会是乱码了,而是完整的中文,呵呵。

maven的依赖管理
maven对项目依赖的库文件进行集中管理,所有库文件都以一定结构存放在repository中,并用artifactId,groupId, version三个属性来标示它们。当项目需要某些库文件时,只要指明这三个属性即可。库文件在repository中存储结构也和这三个属性紧密相关,其关系为${mave.repo.remote}//s/ -.。也就是假定repository的根目录为/javarepository那么 groupId为spring,artifactId为spring-orm,版本(version)为1.1.3的jar的库文件的存储路径为 /javarepository/spring/jars/spring-orm-1.1.3.jar。
maven的repository通常放在对公众开放的主机上,并由众多的镜像构成,最主要的是http://www.ibiblio.org/maven/。选择哪些repository是通过 Java系统变量maven.repo.remote。比如下面的配置maven.repo.remote=http://ultra/maven/, http://www.ibiblio.org/maven/,http://boss.bekk.no/maven/,http://mirrors.sunsite.dk/mavenhttp://www.ganet.org/maven将使maven从www.ibiblio.org,boss.bekk.no, mirrors.sunsite.dk,www.ganet.org四个站点依次寻找依赖的文件。该变量可以在四个地方设置:

${project.home}/project.properties 
${project.home}/build.properties 
${user.home}/build.properties 
-D maven命令行, 
其优先级依次升高。通常在${maven.home.local}/build.properties中设置此变量。

使用代理
如果你只能通过代理访问,不要紧,Maven为你提供了下列属性: 

代理属性 描述 
maven.proxy.host 代理的IP地址  
maven.proxy.port 代理端口  
maven.proxy.username 如果代理需要认证的话,在这里填写用户名。 User name if your proxy requires authentication.  
maven.proxy.password 如果代理需要认证的话,在这里填写密码。  

如果你实在需要代理,最好在${user.home}/build.properties文件中指定。 

## ----------------------------------------------------------
## ${user.home}/build.properties
## ----------------------------------------------------------
.
.
maven.proxy.host = my.proxyserver.com
maven.proxy.port = 8080
maven.proxy.username = username
maven.proxy.password = password
.
.
使用多个远程Repositories
你可以在任何Maven可以处理的属性文件中指定使用多个远程Repositories,如: 

maven.repo.remote = http://www.ibiblio.org/maven /,http://www.mycompany.com/maven/ 
项目设置

下面列举一些常用的goal命令
>> maven jar 打jar包,不过执行这个goal,mavan test和maven java:compile也会被执行。
>> 当然也可以分开执行:maven test 单元测试 maven java:compile 编译工程
>> maven -Dmaven.test.skip jar 这样可以跳过单元测试不执行,直接打jar包,节约时间。
>> -D,--define arg   定义一个系统属性
>> -E,--emacs        输出简洁的日志信息
>>  -X,--debug        输出debug信息
>>  -b,--nobanner     禁止 logo banner
>>  -d,--dir arg      设置指定的工作目录
>>  -e,--exception    输出异常堆栈信息
>>  -f,--find arg     通过搜寻项目文件来确定执行的项目文件及其工作目录
>>  -g,--goals        显示可用的目标
 >> -h,--help         显示帮助信息
>>  -i,--info         显示系统信息
>>  -o,--offline      离线构建
>>  -p,--pom arg      指定项目文件
>>  -v,--version      显示版本号

maven 的dependency 写法
<dependencies>
  <dependency>
    
<groupId>springframework</groupId>
    
<artifactId>spring-web</artifactId>
    
<version>1.1.4</version>
  
</dependency>

  <dependency>
    
<groupId>jstl</groupId>
    
<artifactId>jstl</artifactId>
    
<version>1.1.2</version>
    <type>jar</type>
    <properties>
      <war.bundle>true</war.bundle>
    </properties>
  </dependency>

  <dependency>
    <groupId>dwr</groupId>
    <artifactId>dwr</artifactId>
    <jar>dwr.jar</jar>
    <properties>
      <war.bundle>true</war.bundle>
    </properties>
  </dependency>

</dependencies>
上面是三种dependency的写法,第一种最简单,不推荐使用,第二种是比较标准的写法,第三种是没有版本号情况下的写法。其目录结构如下(以第二种情况举例):
- repository
  - jstl                       (1)
    - jars
        jstl-1.1.2.jar         (2)
        jstl-1.1.2.jar.md5

可以看出(1)处对应着dependency中的gruopId(2)处对应${artifactId}-${vsersion}.jar ,maven就是根据这种对应关系来定位依赖文件的。如果在本地的repository未找到与dependencies中定义的依赖文件,则会自动从mavenrepository站点中下载。Dependency中的<war.bundle>true</war.bundle>表示在执行maven war操作时该依赖文件将会复制到wepappWEB-INF/lib目录下。

注:本地repository的默认路径为:%HOMEDRIVE%%HOMEPATH%\.maven\repository

只有注册用户登录后才能发表评论。


网站导航: