Ordinary hut

人间一福地,胜似天仙宫
posts - 61, comments - 50, trackbacks - 0, articles - 1

maven一些说明

Posted on 2011-03-04 16:29 landor 阅读(735) 评论(0)  编辑  收藏 所属分类: maven
    1 dependency中的scope
    compile:默认,编译范围,会被打包;
    provide:已经提供范围,比如文件A.java在打包的时候需要xxx.jar,这个jar在目标环境中已经存在了,我们不需要把他也一起打包,就用provided
    runtime:编译的时候不需要,运行和测试的时候需要;
    test:在编译和运行的时候不需要,只有在测试的时候才需要;
    system:类似provided,但是必须提供依赖的路径,比如所以来的jar文件的位置;这样maven不会在本地仓库中寻找它了;不被推荐使用;
    2 dependency中的version
    (, )不包含,[, ]包含,例如:
    <version>1.4.1</version> 版本是1.4.1
    <version>[3.8,4.0)</version> 版本是>=3.8并且<4.0
    <version>[,4.0)</version> 版本是任何<4.0
    <version>[3.8,)</version> 版本是任何>=3.8
    3 dependency是传递的
    比如spring依赖common-xxx依赖,我们只需要引入spring dependency即可,maven会自动去找spring的那些依赖;
    4 dependency依赖排除
    有时候A依赖B,B依赖C,但是C在中央仓库或者你的仓库中没有,就会有问题。比如hibernate依赖Sun JTA API,但是他在中央Maven 仓库中没有,而在仓库中有另一个JTA实现,并不是Sun的,就可以这么用:
    <dependencies>
        
    <dependency>
            
    <groupId>org.hibernate</groupId>
            
    <artifactId>hibernate</artifactId>
            
    <version>3.2.5.ga</version>
            
    <exclusions>
                
    <exclusion>
                    
    <groupId>javax.transaction</groupId>
                    
    <artifactId>jta</artifactId>
                
    </exclusion>
            
    </exclusions>
        
    </dependency>
        
    <dependency>
            
    <groupId>org.apache.geronimo.specs</groupId>
            
    <artifactId>geronimo-jta_1.1_spec</artifactId>
            
    <version>1.1</version>
        
    </dependency>
    </dependencies>
    这两个依赖是没有关系的,只不过是在geronimo-jta_1.1_spec提供的内容正好是hibernate所需要的;
    5 dependencyManagement的作用
    挡在parent pom.xml中定义了dependencyManagement之后,子项目可以引用它而不用声明版本号,就是说他会默认parent pom.xml中的版本号,比如:
    <dependencyManagement>
        
    <dependencies>
            
    <dependency>
                
    <groupId>mysql</groupId>
                
    <artifactId>mysql-connector-java</artifactId>
                
    <version>5.1.2</version>
            
    </dependency>
            
        
    <dependencies>
    </dependencyManagement>
    那么子项目就可以引用它:
    <project>
        
    <modelVersion>4.0.0</modelVersion>
        
    <parent>
            
    <groupId>org.sonatype.mavenbook</groupId>
            
    <artifactId>a-parent</artifactId>
            
    <version>1.0.0</version>
        
    </parent>
        
    <artifactId>project-a</artifactId>
        
        
    <dependencies>
        
    <dependency>
            
    <groupId>mysql</groupId>
            
    <artifactId>mysql-connector-java</artifactId>
        
    </dependency>
        
    </dependencies>
    </project>
    可以在子pom.xml中写版本,那样会覆盖parent pom.xml中的依赖的版本;








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


    网站导航: