mvn使用

去除依赖

我在子模块a中引用了一个依赖, 但是这个依赖在spring-xxx的父项目中已经申明了, 且比我的旧, 找到引入spring-xxx的地方:
mvn -Dverbose dependency:tree

                
                    
                        com.jayway.jsonpath
                        json-path
                    
                

插件使用

因为公司的代码扫描会检测到antlr生成的代码里有冗余的imports, 不让合并,所以, 为了跳过它.
标签, 默认值是${basedir}/src/java/antlr 下, ${basedir}变量会自动寻找当前项目的目录(不是根目录,在子项目里获取根目录是其他方法)
outputDirectory 是生成的类的目录, 生成的类,会默认具有antlr下的目录结构, 如
antlr/com/abc/my.g4 那么生成的类在output的目录后面 + antlr/com/abc/ 下.
process-sources 这样就可以跳过代码检测了, 在拉下代码后, 使用compile就可以生成代码了, 且为了避免被git add ,还要设置.gitignore 将目录下的文件加入, 这样上传的时候就会忽略它们.
true 这个可以让生成过程更加严谨可控. 参考antlr官网的plugin说明

    
        
            
                org.antlr
                antlr4-maven-plugin
                4.9.3
                
                    
                    ${basedir}/src/main/java/
                    true
                    true
                
                
                    
                        antlr
                        process-sources
                        
                            antlr4
                        
                    
                
            
        
    

maven的生命周期

参考菜鸟教程
插件的运行可以绑定到任何的生命周期: 1. clean(清理, 依赖) 2. build 3. site(发布文档), 而每个周期, 又可以分为许多phase, Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成. 其中build是编译构建阶段, 又分为了:

image.png

上个小节中就是把插件绑定到了处理源代码阶段, 其实应该放在生成源代码阶段的.

profile 的使用

构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值。使用构建配置文件,可以为不同的环境,比如说生产环境(Production)和开发(Development)环境,定制构建方式。在 pom.xml 文件中使用 activeProfiles 或者 profiles 元素指定,并且可以通过各种方式触发。配置文件在构建时修改 POM,并且用来给参数设定不同的目标环境(比如说,开发(Development)、测试(Testing)和生产环境(Production)中数据库服务器的地址)。
项目中定义了test dev prod ,且使用了


    true

来标识默认启动的profile, 也可以用命令行指定 mvn compile -Pdev
profile里可以配配置build的插件, repo等. 还可以通过操作系统来指定不同的build参数, 如hive,就是这么做的

   
      
      windows-test
      
        
          Windows
        
      
      
        
          
          
          
          
          
            org.apache.maven.plugins
            maven-dependency-plugin
            2.8
            
              
                copy-dependencies
                package
                
                  copy-dependencies
                
                
                  ${project.build.directory}/deplibs/
                  false
                  false
                  true
                
              
            
          
        
      
      
        ${basedir}/${hive.path.to.root}/testutils/hadoop.cmd
        
        ;${env.HADOOP_HOME}/bin
        ${project.build.directory}/deplibs/*
        file:///${test.tmp.dir}
        file:/
      
    
         
            
               doing  process sources
            
         

和goal同级的config内配置tasks还能输出信息,或者其他事情.

项目的依赖管理

依赖配置

todo 关于 依赖的 范围: run , compile, provides, test 还不是很清楚, 项目里没有实际的例子

Maven单独构建多模块项目中的单个模块

说明:

1、可能存在的场景,多模块项目没有互相引用,那么此时可以单独构建单个项目,指定到子模块的pom.xml文件即可完成编译。

2、如果多模块项目各自都引用了,那么单独编译子模块的pom.xml文件会直接报错,解决方法就是编译父项目pom.xml。

3、如果编译父项目,那么可能会造成编译时间很慢,其中有些项目也不需要编译,解决方法如下:

解决方法:

Maven选项:

-pl, --projects
        Build specified reactor projects instead of all projects
-am, --also-make
        If project list is specified, also build projects required by the list
-amd, --also-make-dependents
        If project list is specified, also build projects that depend on projects on the list

首先切换到工程的根目录

单独构建模块jsoft-web,同时会构建jsoft-web模块依赖的其他模块

mvn install -pl jsoft-web -am

单独构建模块jsoft-common,同时构建依赖模块jsoft-common的其他模块

mvn install -pl jsoft-common -am -amd

参考:

http://blog.csdn.net/yanjunlu/article/details/39177115(以上内容转自此篇文章)

你可能感兴趣的:(mvn使用)