美文网首页软件测试学习之路
Maven打可执行jar包的实用方法

Maven打可执行jar包的实用方法

作者: 乘风破浪的姐姐 | 来源:发表于2018-01-15 13:07 被阅读16次

当Maven工程中,有许多依赖jar包时,打成可执行jar时需要将这些依赖包一起打包。
1、在pom.xml文件的build节点中添加resources节点

  <resources>
            <!-- 控制资源文件的拷贝 -->
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>${project.build.directory}/classes</targetPath>
            </resource>
   </resources>

2、在pom.xml文件中的plugins节点中添加maven-compiler-plugin、maven-jar-plugin打包框架

 <!-- The configuration of maven-jar-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <!-- The configuration of the plugin -->
                <configuration>
                    <!-- Configuration of the archiver -->
                    <archive>
                        <!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
                        <addMavenDescriptor>false</addMavenDescriptor>
                        <!-- Manifest specific configuration -->
                        <manifest>
                            <!-- 是否要把第三方jar放到manifest的classpath中 -->
                            <addClasspath>true</addClasspath>
                            <!-- 生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/ -->
                            <classpathPrefix>lib/</classpathPrefix>
                            <!-- 应用的main class -->
                            <mainClass>com.sc.test.ApiTest</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <!-- The configuration of maven-assembly-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <!-- The configuration of the plugin -->
                <configuration>
                    <!-- Specifies the configuration file of the assembly plugin -->
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

3、在project节点内部设置文件编码,用于解决工程导入的乱码问题

 <properties>
        <!-- 文件拷贝时的编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 编译时的编码 -->
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    </properties>

4、在项目 src/main文件夹下,创建assembly文件夹,在该文件夹下新增assembly.xml文件。

<assembly>
    <id>bin</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <!-- 最终打包成一个用于发布的zip文件 -->
    <formats>
        <format>zip</format>
    </formats>

    <!-- Adds dependencies to zip package under lib directory -->
    <dependencySets>
        <dependencySet>
            <!--
               不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录
           -->
            <useProjectArtifact>false</useProjectArtifact>
            <!--<outputDirectory>lib</outputDirectory>-->
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>

    <fileSets>
        <!-- 把项目相关的说明文件,打包进zip文件的根目录 -->
        <!--<fileSet>-->
        <!--<directory>${project.basedir}</directory>-->
        <!--<outputDirectory>/</outputDirectory>-->
        <!--</fileSet>-->

        <!-- 把项目的配置文件,打包进zip文件的config目录 -->
        <fileSet>
            <directory>${deploy.dir}/classes/</directory>
            <outputDirectory>/conf</outputDirectory>
            <includes>
                <include>*.xml</include>
                <include>*.properties</include>
            </includes>
        </fileSet>
        <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

5、执行命令:mvn clean package,项目生成文件夹


image.png

6、解压target文件夹下****-1.0-SNAPSHOT-bin.zip到 lib文件夹
7、在lib同级文件夹下新增data文件夹,将项目中用到的文件放入data中。
注意:文件夹命名为data,是因为项目中用到的文件就在data下。
8、将lib文件夹、data文件夹,**-1.0-SNAPSHOT.jar放在同一个目录下。


image.png

9、cmd,进入该文件夹中,输入 java -jar -1.0-SNAPSHOT.jar,执行*-1.0-SNAPSHOT.jar,即可。

image.png

相关文章

网友评论

    本文标题:Maven打可执行jar包的实用方法

    本文链接:https://www.haomeiwen.com/subject/oniroxtx.html