zoukankan      html  css  js  c++  java
  • [转] 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包不会被解开)

  • 相关阅读:
    linux设置永久别名
    网站架构
    c#: 判断Firefox是否安装
    似是故人来
    Python: re.sub()第二个参数
    Python: AES加密与解密
    c#: Noto Sans字体如何支持韩文
    Inno Setup安装程序单例运行
    朵朵的二维码
    Python: 浅淡Python中的属性(property)
  • 原文地址:https://www.cnblogs.com/pekkle/p/9680769.html
Copyright © 2011-2022 走看看