maven添加远程仓库以及导出依赖的jar包以及常用操作收集

阅读更多

Maven常见的问题集锦 

 

先说结果吧,要添加其它的远程仓库,需要在maven的conf目录下的setting.xml里面添加下面配置:

 

在   节点下添加(里面的url地址就是仓库的地址,根据自己的情况替换就好了):

 

 


      dev
	    
		  
		  company  
		  company  
		  http://192.168.2.202:8081/nexus/content/repositories/releases/  
		    
			true  
		    
		    
			false  
		    
		  
	    
	    
		  
		  company  
		  company  
		  http://192.168.2.202:8081/nexus/content/repositories/releases/  
		    
			true  
		    
		    
			false  
		        
		  
	    	  
    

 

 

同时在setting.xml最后之前加上下面的(这里的dev就是上面repository的id):

 

 


    dev
  

 

 

这样就可以从其它的仓库下载了

 

 

参考:

Maven最佳实践:Maven仓库

 

 

从Maven仓库中导出jar包:进入工程pom.xml 所在的目录下,输入:

 

mvn dependency:copy-dependencies

 

会导出到targed/dependency 下面

 

可以在工程创建lib文件夹,输入以下命令:

 

mvn dependency:copy-dependencies -DoutputDirectory=lib  

 

这样jar包都会copy到工程目录下的lib里面

 

可以设置依赖级别,通常用编译需要的jar

 

mvn dependency:copy-dependencies -DoutputDirectory=lib   -DincludeScope=compile

 

 

 

参考:

Maven导出工程依赖的jar包

 

 

查看一个插件的常用命令描述:

 

 

mvn help:describe -Dplugin=插件名字

 

 

例如:

 

 

mvn help:describe -Dplugin=dependency

 

 

 

可以查看dependency插件的常用命令。

 

查看一个插件的常用命令以及完整描述:

 

 

mvn help:describe -Dplugin=插件名字 -Dfull

 

 

 例如:

 

mvn help:describe -Dplugin=dependency -Dfull

 

查看dependency插件的完整命令描述

 

 

创建一个最简单的maven项目:

 
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  -DgroupId=com.tch.test -DartifactId=simpleMavenProject
 
 

maven  web项目:

 

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.mycompany.app -DartifactId=my-webapp

 

 
maven下载依赖jar包的源码和javadoc:
mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc
 
 
maven多模块示例:
假设在名字为simple-parent的文件夹下面有一个pom.xml (也就是所谓的父模块pom.xml)、一个名字为 firstChild 的文件夹(里面是一个maven子模块)、一个名字为secondChild的文件夹(里面也是一个maven子模块)
 
其中父模块pom.xml 内容为:
注意:模块的加载顺序和该模块在父模块的pom.xml中配置的顺序有关,例如下面的firstChild就会先于secondChild模块
 

	4.0.0
	com.tch
	maven-parent
	
	pom
	1.0
	Chapter 6 Simple Parent Project
	
	    
		firstChild
		secondChild
	
  
firstChild 的pom.xml :

	4.0.0
	
	
	
		com.tch
		maven-parent
		1.0
	

	
	firstChild
	1.0
	jar

	
		UTF-8
	
 
 
secondChild 模块的pom.xml : 

	4.0.0

	
	
		com.tch
		maven-parent
		1.0
	

	
	secondChild
	war
	1.0

	
		UTF-8
	
	
		webmaven
		
			
			
				org.mortbay.jetty
				maven-jetty-plugin
			
		
	
 
 
 在父pom.xml中配置 dependency 和 配置 dependencyManagement 的区别:
在父pom.xml中配置dependency的话,子模块就会继承该依赖,假如父pom.xml中配置了下面的依赖:
		
			junit
			junit
			3.8.1
			test
		
 
 
然后在子模块运行下面命令查看子模块的依赖:
mvn dependency:resolve
 
 
 就会发现子模块的依赖包含了上面再父pom.xml中配置的依赖。类似于java里面继承的效果。
 
如果在父pom.xml中配置dependencyManagement的话,假如dependencyManagement里面配置了上面同样的依赖:

		
			
				junit
				junit
				3.8.1
				test
			
		
	
 
 
  然后在子模块运行
mvn dependency:resolve
 
 查看子模块的依赖的话,就会发现子模块并没有继承父模块dependencyManagement里面配置的依赖。
要想使用父模块dependencyManagement里面配置的依赖,需要在子模块配置(注意没有version):
		
			junit
			junit
		
 
 ,然后在子模块运行
mvn dependency:resolve
 
 命令查看子模块的依赖,就会发现子模块的依赖包含了junit,并且版本号是父pom.xml里面配置的版本号。
 
所以,dependencyManagement 其实是为了统一管理版本号,把公用的依赖放到dependencyManagement里面管理,在需要引用该依赖的地方只需要groupId和artifactId即可引用该依赖。避免了版本号不同引发的问题
 
  使用jetty插件运行web项目:
在pom.xml 的build 中添加jetty插件:(版本号自定)
			
				org.mortbay.jetty
				maven-jetty-plugin
				${jetty-version}
			
 
 然后运行命令:mvn jetty:run 即可
貌似如果运行tomcat插件的话,我这里直接运行  mvn tomcat:run  就可以了,没有配置tomcat插件。。。
 
 
使用Maven CXF插件根据WSDL生成java类:
	
		
			
				org.apache.cxf
				cxf-codegen-plugin
				2.7.8
				
					
						generate-sources
						generate-sources
						
							src/cxf
							
								
									http://xxx?wsdl
									jaxws21
									1
								
							
						
						
							wsdl2java
						
					
				
			
		
	
 
然后执行 mvn generate-sources 即可在src/cxf目录下生成java类
 
将项目依赖的jar包的源码下载到目录dependency_src目录,但不解压(以jar格式):
mvn dependency:copy-dependencies -DoutputDirectory=dependency_src   -DincludeScope=compile -Dclassifier=sources
 
 
将项目依赖的jar包的源码下载到目录dependency_src目录并解压:
mvn dependency:unpack-dependencies -Dclassifier=sources -DfailOnMissingClassifierArtifact=false -DoutputDirectory=dependency_src -DincludeScope=compile
 
 使用jacoco生成测试覆盖率report :
参考:http://www.eclemma.org/jacoco/trunk/doc/index.html  
  • Maven Usage Example - Offline Example
 
maven tomcat plugin : 在pom.xml中添加Plugin:然后运行:mvn tomcat7:run即可
  
    ssh
    
      
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.2
        
          
          9090
          
          /
        
      
    
  
 
maven jetty plugin:在pom.xml中添加plugin,然后运行: mvn jetty:run 即可

				org.mortbay.jetty
				maven-jetty-plugin
				6.1.10
				
					5
					
						/
					
                      
                          
                            
                            18080  
                          
                     
				
			
 
 
 多个module的时候,我们修改了某个module,然后只需要从该module开始build即可,这样就不必要build这个module之前的那些module了:(详细参考)
mvn clean install -rf  module-name
 
parent pom.xml和child pom.xml:
parent pom.xml:
  
    my-modules/my-module-1
  
 
The value of is the relative path from the com.mycompany.app:my-app:1 to com.mycompany.app:my-module:1's POM(可以在链接中搜索这句话)
module的值,是从parent的pom.xml到该module的pom.xml的相对路径
child pom.xml:
  
    parent-groupId
    parent-artifactId
    parent-version
    ../../pom.xml
  
 
relativePath的值,是从该module的pom.xml到parent的pom.xml的相对路径
 
国内maven 仓库地址:






  
  D:/Program Files/apache-maven-3.3.1/repository

  

  

  
  
    
  

  
  
    
  

  
  
    

    
  

  
	
		
		
			CN
			OSChina Central
			http://maven.oschina.net/content/groups/public/
			central
		
		
			ibiblio
			ibiblio
			http://mirrors.ibiblio.org/pub/mirrors/maven2/
			central
		
		
			jboss-public-repository-group
			JBoss Public Repository Group
			http://repository.jboss.org/nexus/content/groups/public
			central
		
	

  
  
    

    
  

  

 
添加log4j  slf4j依赖:
    
      org.slf4j
      slf4j-log4j12
      1.7.2
    
  
 
 

你可能感兴趣的:(maven,添加仓库,导出依赖jar包,dependency,copy)