【maven】maven-jar-plugin 搭配 maven-dependency-plugin 使用

正常的main函数程序,我们直接package生成的jar包无法直接运行,因为没有再/META-INF/MANIFEST.MF中指定主类。

1.指定主类有很多方法,这里介绍下最简单的使用maven-jar-plugin插件的方法。

只需要加一条mainClass的配置,指定主类名即可;

这样不出意外可以运行。

2.如果我们的项目有外部依赖,即定义了dependency,那么默认不会把依赖打入jar包中,这样,如果我们直接jar -jar运行,就会报错,找不到class。

解决方案是:

第一步,为maven-jar-plugin添加外部依赖的路径;其实这里使用了maven-jar-plugin插件配置了/META-INF/MANIFEST.MF中的两个元素。

第二步,使用maven-dependency-plugin把依赖打入路径;

完整的pom:




  4.0.0

  com.liyao
  testMaven
  1.0-SNAPSHOT
  testMaven
  
      
      org.apache.commons
      commons-lang3
      3.8.1
      
  

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


这样执行mvn clean package以后,就可以直接java -jar运行了。

看下.MF文件:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: miracle
Class-Path: lib/commons-lang3-3.8.1.jar
Created-By: Apache Maven 3.5.3
Build-Jdk: 1.8.0_101
Main-Class: com.liyao.App

这样是比较简单直接的一种配置可执行jar包的方法,既可以指定主类,也可以管理外部依赖的位置。

你可能感兴趣的:(maven)