Maven手动构建jar包

Maven手动构建jar包

  • 何为maven
  • Maven的目录结构
  • Maven构建命令
    • 引用了其他jar包的情况(第三方jar包不与package打成一个包)
    • 引用了其他jar包的情况(第三方jar包与package打成一个包)
    • maven依赖范围
    • maven对于jar包冲突的处理

何为maven

maven是一个纯java开发的,用来管理java项目的。其用处:
1、依赖管理,即管理jar包。普通的项目,需要将项目所需的jar包放入libs文件夹中。而maven项目,只需要通过pom文件即可添加和管理jar包。
2、用于项目的构建。对于一个普通的只包含java源代码的项目,可以通过maven命令,完成项目的编译、测试、运行、打包以及部署等。

Maven的目录结构

Maven手动构建jar包_第1张图片

Maven构建命令

mvn clean: 清理编译的文件,将target目录删除
mvn compile: 编译源码
mvn package:打包
mvn test:编译并运行test目录下的代码
mvn install: 安装打包文件到仓库
mvn tomcat:run 启动tomcat服务器

#maven打包可执行的jar文件
##没有引用第三方jar包,在pom添加插件

	
				org.apache.maven.plugins
				maven-jar-plugin
				2.4
				
					
						
							true
							lib/
							
							jarTest.JavaTest
						
					
				
			

在cmd中,进入项目pom文件所在目录,执行
mvn clean
mvn package
进入到target目录,执行可执行程序
java -jar jarTest-0.0.1-SNAPSHOT.jar

引用了其他jar包的情况(第三方jar包不与package打成一个包)

比如,在项目中引用了netty的jar包,


		
			io.netty
			netty-all
			5.0.0.Alpha1
		
	

如果仍用上述方法,会报找不到netty包的方法的错误。通过在pom文件中添加如下插件

	
		


			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				
					1.7
					1.7
					UTF-8
				
			




			
				org.apache.maven.plugins
				maven-jar-plugin
				2.4
				
					
						
							true
							lib/
							jarTest.JavaTest
						
					
				
			

		  
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy
                        package
                        
                            copy-dependencies
                        
                        
                            
                            ${project.build.directory}/lib
                            
                            true
                            
                            false
                        
                    
                
			

		
	

引用了其他jar包的情况(第三方jar包与package打成一个包)


		
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				
					1.7
					1.7
					UTF-8
				
			

            
                org.apache.maven.plugins
                maven-shade-plugin
                2.0
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    jarTest.JavaTest
                                
                                
                                        
                                    
                                
                            
                            true
                            executable
                        
                    
                
            


		
	

maven依赖范围

依赖范围通过 标签来确定。


			javax.servlet
			jsp-api
			provider
		

其值可分为以下几种:
1、compile :从编译、测试、打包、运行都需要
2、provided:编译、测试是需要,打包、运行不需要jar包(经常servlet-api和jsp-api会用到这个,因为tomcat服务器里有此两个jar,因此我们在打包时候不需要将这两个包打进去)
3、runtimer:编译时候不需要,测试、打包、运行时候需要
4、test: 只有测试时候才需要(junit.jar)

maven对于jar包冲突的处理

1、排除原则 ,通过exclusion标签

	
   	
   		com.alibaba
   		dubbo
   		
   			
   				org.springframework
   				spring
   					        
   	     	
   				org.jboss.netty
   				netty
   			
   		
   	

2、版本锁定。通常在父工程中通过dependencyManagement 统一多模块的依赖版本

	
		
			
				org.springframework
				spring-context
				${spring.version}
			



你可能感兴趣的:(java)