zoukankan      html  css  js  c++  java
  • Maven编译可执行jar

    打包:

    第一种情况:独立项目,且无第三方依赖包

    这种情况下,我们需要maven的maven-jar-plugin插件来帮我们打包。请在项目pom.xml中的plugin配置处加入如下内

    <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <!-- 如果项目带有3rd-party lib,这些依赖将被放入lib文件夹 -->
                    <!-- 注意:这个文件夹要随着jar文件一起distribute,否则jar文件运行时将报错 -->
                    <classpathPrefix>lib/</classpathPrefix>
                    <mainClass>com.yourProjectPackage.YourEntranceClass</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
     

    然后用mvn clean install来编译安装你的项目。命令执行结束后会生成一个jar文件,一个lib文件夹(如果你的项目引用了3rd-party dependencies的话)。双击jar文件,就立刻看到效果了。有界面的项目应该能看到主界面(如果你程序没错的话),没有界面的,应该可以从你机器的java console里看到相关信息,或者项目自身有log输出或具有神奇的效果的,可以直接去检视输出结果。

    第二种情况:项目+第三方依赖包

    这种情况就无法使用maven-jar-plugin插件来打包了。我们要用另一个插件maven-assembly-plugin。这个插件可以帮助我们灵活的打包我们的项目(不仅打包jar项目,还可以用于ear、war等项目的打包,本文只介绍如何打可执行jar包)。这里,我们使用此插件将我们的source code编译结果以及项目的dependencies打到一起,形成一个jar文件。

    下面就是项目的pom.xml中plugin的配置部分:

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <!-- 这个archive以及archive里面的设置很重要,没有这个配置,就无法生成可执行jar文件 -->
            <archive>
                <manifest>
                    <mainClass>com.your.package.YourEntranceClass</mainClass>
                </manifest>
            </archive>
            <!-- 这个jar-with-dependencies是这个插件中预置的,不用管它,尽管用就好了 -->
            <!-- 当然,你也可以用自己的descriptor。如何用?自己去查这个插件的文档 -->
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
        <executions>
            <execution>
                <id>make-assembly</id>
                <!-- 这里的phase和goals都是maven的基础概念,不懂的可以去看maven的文档 -->
                <!-- 总之,当你install你的project的时候,是会涵盖package phase和single goal的 -->
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
     
     
  • 相关阅读:
    单个 js 文件禁用 ESLint 语法校验
    meta标签整合
    安装es6编译babel
    JSON.parse()和JSON.stringify()的区别
    preventDefault()、stopPropagation()、return false 的区别
    excel 表格内容读取
    redis 小例
    多文件打包下载
    随笔
    js数组删除元素
  • 原文地址:https://www.cnblogs.com/energy1010/p/6147857.html
Copyright © 2011-2022 走看看