Maven笔记


技能树

Java开发须备技能: Java -> Maven -> JDK -> MySql -> MongoDb

maven 环境变量

vi /etc/profile

export M3_HOME=/opt/maven
export PATH=${M3_HOME}/bin:${PATH}

source /etc/profile

maven 帮助查看参数:

mvn help:describe -Dplugin=dependency -Dmojo=copy-dependencies -Dfull

打包命令

mvn8-package

export JAVA_HOME=/opt/jdk1.8.0_301
mvn clean package -Dmaven.test.skip=true -e -U -am -P nancal-snapshots -pl  $*

把它放到 /usr/bin/ 下 , 需要执行时: mvn8-package ktweb

  • 指定配置文件
    --settings c:\user\settings.xml

设置默认私服

  1. Idea 使用自定义的Maven
  2. maven setting.conf 添加:

    
        nancal-dev
        
            
                nancal-dev
                http://nexus.cloudnk.cn/repository/maven-public/
                
                    true
                
                
                    true
                
            
        
        
            
                nexus
                http://nexus.cloudnk.cn/repository/maven-public/
                
                    true
                
                
                    true
                
            
        
    


    nancal-dev

Maven添加本地Jar包

 网上说了很多,只有它: http://blog.csdn.net/hhb200766/article/details/42168819 好用。
 Maven参数有几千个,与其说强大,不如说笨拙。
 添加本地lib文件夹做为仓库:


    in-project
    In Project Repo
    ${project.basedir}/lib


添加引用:

    jwd  
    pzx_entity    
    3.0.0 
    
    


lib文件夹下Jar包格式:
/groupId/artifactId/version/artifactId-verion.jar

排除包里的引用


    org.springframework.boot
    spring-boot-starter-data-mongodb
    
        
            org.mongodb
            mongodb-driver
        
        
            org.springframework.data
            spring-data-mongodb
        
    

scope provided

有时,一个项目中,只能有一个Jar包被引用.像:  spring-session
在 entity中引用 spring-session 时, 就要使用:  scope  provided

发布到私服

http://www.cnblogs.com/fengpingfan/p/5192738.html
http://www.cnblogs.com/winner-0715/p/7495179.html

  • 在nexus 上找到 releases , 设置 Deployment Policy -> Allow Redeploy , 同时, 点击 Summary , Copy distributionManagement 配置内容到 项目的 pom.xml 的根路径下
  • build 增加 plugin

	org.apache.maven.plugins
	maven-source-plugin
	3.0.1
	
		true
	
	
		
			attach-sources
			
			package
			
				jar-no-fork
			
		
	

  • 使用配置文件部署 mvn deploy --settings E:\opt\apache-maven-3.5.3\xuauto.settings.xml
  • 如果本地项目的 pom.xml 依赖父pom.xml , 手动把 父 pom.xml 上传到 nexus 的 releases 库上. nexus 会自动同步到 public 上.

Jar包瘦身

http://rickgong.iteye.com/blog/2368985


        
             
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy-dependencies
                        prepare-package
                        
                            copy-dependencies
                        
                        
                            ${project.build.directory}/lib
                            false
                            false
                            true
                            
                            false
                            
                            false
                            cn.dev8,cn.nancal
                        
                    
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    ZIP
                    
                        
                            cn.dev8
                            ktbase
                        
                        
                            cn.dev8
                            ktmyoql
                        
                        
                            cn.dev8
                            ktmvc
                        
                        
                            cn.dev8
                            ktweb
                        
                        
                            cn.nancal
                            mp-entity
                        
                        
                            cn.nancal
                            mp-orm
                        
                    
                    nancal.mp.MainApplicationKt
                
                
                    
                        
                            repackage
                        
                    
                
            
        

运行时, 指定 lib:
java -Dloader.path="c:/lib" -jar my-service.jar

依赖冲突

使用 Idea 插件 Maven Helper .