[转] maven打包可运行的fat-jar的简单方法

[From] https://blog.csdn.net/tearsky253/article/details/75948721

问题

在使用“mvn package”命令编译application之后,生成的.jar文件不能直接被“java -jar”命令运行,一般都是因为: 
1. Manifest中没有主清单属性。 
2. 依赖项在.jar文件中不存在。

这两个问题可以通过在pom.xml中增加build plugin来解决。

方法1

使用maven-assembly-plugin来打包fat-jar。

假设我们的application的Main Class是practice.spring.sprice.App,那么我们需要在pom.xml中增加如下一段:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>practice.spring.sprice.App</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这种方法打包出来的.jar中: 
1. practice.spring.sprice.App会被作为主类。 
2. 包含所依赖的所有jar的内容(这些jar包会被解开)。

方法2

使用spring-boot-maven-plugin来打包fat-jar。 
在pom.xml中增加如下一段:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.5.6.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这种方法打包出来的.jar中: 
1. org.springframework.boot.loader.JarLauncher会被作为主类,它会自动调用应用程序中的main方法。 
2. 包含所依赖的所有的jar包(这些jar包不会被解开)

原文地址:https://www.cnblogs.com/pekkle/p/9680769.html

时间: 2024-10-14 04:23:10

[转] maven打包可运行的fat-jar的简单方法的相关文章

maven: 打包可运行的jar包(java application)及依赖项处理

IDE环境中,可以直接用exec-maven-plugin插件来运行java application,类似下面这样: 1 <plugin> 2 <groupId>org.codehaus.mojo</groupId> 3 <artifactId>exec-maven-plugin</artifactId> 4 <version>1.2.1</version> 5 <executions> 6 <execu

Maven 打包可运行 jar

使用 maven 将项目打包成可运行 jar 注意两点 1. 复制项目依赖的其他 jar 打包后, 再运行如下命令将依赖的 jar 复制到 target/lib 目录 mvn dependency:copy-dependencies -DoutputDirectory=target/lib 2. 在生成的 jar 包的 META-INF\MANIFEST.MF 文件指定 Main Class 的信息 在 pom.xml 文件加入 <build>     <plugins>     

用Maven打包发布可执行的jar包

项目有个需求,要把当前项目的代码和依赖打包成一个jar包,再把jar包和一些相关文件一起打包成一个tar 这里用到了两个插件,shade 和assembly,shade负责生成jar包,assembly负责打包成tar.pom.xml配置如下:     <build>         <plugins>              <plugin>                 <groupId>org.apache.maven.plugins</gr

IDEA Maven 打包独立可执行的 jar 包

在 pom.xml 中添加了如下配置后,打包出来的依然是普通的 xxxx.jar 文件,并没有后面的 jar-with-dependencies,经过网上多方寻找之后,参考这篇文章 得到解决 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.0</vers

maven打包的时候导出依赖jar包

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>install</phase

maven入门(3-1)maven打包时跳过测试的几个方法

运行mvn install时跳过Test 方法一:<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <config

maven管理项目,引入本地jar包的方法

例: <dependency>     <groupId>javapns</groupId>     <artifactId>javapns</artifactId>     <version>1.0</version>     <scope>system</scope>     <systemPath>/Users/xxx/Dev/lib/javapns-jdk16-163.jar&l

Eclipse中打包插件Fat Jar的安装与使用

转自:https://www.cnblogs.com/wbyp/p/6222182.html Eclipse可以安装一个叫Fat Jar的插件,用这个插件打包非常方便,Fat Jar的功能非常强大. 首先要下载Fat Jar,下载地址:https://sourceforge.net/projects/fjep/files/ 下载后的文件是net.sf.fjep.fatjar_0.0.31.zip,解压下载好的ZIP包,将里面的jar文件复制到Eclipse安装路径下的plugins文件夹中. 如

spring boot 使用maven打包删除配置文件

spring boot 项目使用maven打包 项目条件: *.properties放在jar包外面使其方便动态实时配置信息 *.properties在jar包内不允许让其存在(实际是config优先于jar包内的配置文件) 动态指定生成环境而配置文件(转微服务架构内设计) 解决办法 项目服务器jar包所在目录下,新建config文件夹,直接nohup启动即可 maven打包剔除*.properties # build下配置 <resources> <resource> <f