Java中Maven项目导出jar包配置的示例代码

作者:Strugglion 时间:2023-01-26 20:09:32 

具体代码如下所示;


<!-- 第一种打包方式 (maven-jar-plugin), 将依赖包和配置文件放到jar包外 -->
<build>
 <sourceDirectory>src/main/java</sourceDirectory>
 <resources>
   <resource>
     <directory>src/main/resources</directory>
     <!-- 将<directory>目录下的文件打包到<targetPath>下 -->
     <targetPath>${project.build.directory}</targetPath>
     <excludes>
       <exclude>**/*.java</exclude>
     </excludes>
   </resource>
 </resources>
 <testSourceDirectory>src/test/java</testSourceDirectory>
 <testResources>
   <testResource>
     <directory>src/test/resources</directory>
     <filtering>true</filtering>
     <excludes>
       <exclude>**/*.java</exclude>
     </excludes>
   </testResource>
 </testResources>
 <plugins>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>2.3.2</version>
     <configuration>
       <source>1.8</source>
       <target>1.8</target>
       <encoding>UTF-8</encoding>
     </configuration>
   </plugin>
   <!-- 将项目依赖包复制到<outputDirectory>指定的目录下 -->
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-dependency-plugin</artifactId>
     <executions>
       <execution>
         <id>copy-dependencies</id>
         <phase>package</phase>
         <goals>
           <goal>copy-dependencies</goal>
         </goals>
         <configuration>
           <outputDirectory>
             ${project.build.directory}/lib
           </outputDirectory>
         </configuration>
       </execution>
     </executions>
   </plugin>
   <!-- 将项目依赖包的路径(与上一项中的<outputDirectory>对应)添加到classPath中 -->
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <configuration>
       <archive>
         <manifest>
           <addClasspath>true</addClasspath>
           <classpathPrefix>lib/</classpathPrefix>
           <mainClass>com.ctbri.echoRisk.ApplicationStart</mainClass>
         </manifest>
         <manifestEntries>
           <Class-Path>./</Class-Path>
         </manifestEntries>
       </archive>
     </configuration>
   </plugin>      
 </plugins>
</build>

<!-- 第二种打包方式 (maven-shade-plugin), 将依赖包和配置文件放到jar包内 -->
<build>    
 <directory>${project.basedir}/target</directory>
 <finalName>${project.artifactId}-${project.version}</finalName>
 <plugins>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>2.21.0</version>
     <configuration>
       <skipTests>true</skipTests>
     </configuration>
   </plugin>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>2.3.2</version>
     <configuration>
       <source>1.8</source>
       <target>1.8</target>
       <encoding>UTF-8</encoding>
       <compilerArguments>
         <extdirs>${project.basedir}/lib/</extdirs>
       </compilerArguments>
     </configuration>
   </plugin>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-shade-plugin</artifactId>
     <version>3.1.0</version>
     <executions>
       <execution>
         <phase>package</phase>
         <goals>
           <goal>shade</goal>
         </goals>
         <configuration>
           <minimizeJar>true</minimizeJar>
           <filters>
             <filter>
               <artifact>*:*</artifact>
             </filter>
           </filters>
           <transformers>
             <!-- 往MANIFEST文件中写入Main-Class是可执行包的必要条件。ManifestResourceTransformer可以轻松实现。 -->
             <transformer
               implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
               <mainClass>com.ctbri.echoRisk.ApplicationStart</mainClass>
             </transformer>
             <!-- AppendingTransformer 用来处理多个jar包中存在重名的配置文件的合并,尤其是spring -->
             <transformer
               implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
               <resource>META-INF/spring.handlers</resource>
             </transformer>
             <transformer
               implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
               <resource>META-INF/spring.schemas</resource>
             </transformer>
           </transformers>
         </configuration>
       </execution>
     </executions>
   </plugin>
 </plugins>
</build>

<!-- 第三种打包方式 (maven-assembly-plugin) -->
<build>
 <plugins>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>2.21.0</version>
     <configuration>
       <skipTests>true</skipTests>
     </configuration>
   </plugin>
   <plugin>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>2.3.2</version>
     <configuration>
       <source>1.8</source>
       <target>1.8</target>
       <encoding>UTF-8</encoding>
       <compilerArguments>
         <extdirs>${project.basedir}/lib/</extdirs>
       </compilerArguments>
     </configuration>
   </plugin>
   <plugin>
     <artifactId>maven-assembly-plugin</artifactId>
     <configuration>
       <descriptorRefs>
         <descriptorRef>jar-with-dependencies</descriptorRef>
       </descriptorRefs>
       <archive>
         <manifest>
           <mainClass>com.ctbri.echoRisk.ApplicationStart</mainClass>
         </manifest>
       </archive>
     </configuration>
     <executions>
       <execution>
         <id>make-assembly</id>
         <phase>package</phase>
         <goals>
           <goal>single</goal>
         </goals>
       </execution>
     </executions>
   </plugin>
 </plugins>
</build>

总结

以上所述是小编给大家介绍的Java中Maven项目导出jar包配置的示例代码网站的支持!

来源:https://www.cnblogs.com/strugglion/archive/2018/11/26/10020218.html

标签:maven,jar包
0
投稿

猜你喜欢

  • 深入学习Java编程中的字符串的进阶使用

    2023-11-11 12:54:20
  • springboot web项目打jar或者war包并运行的实现

    2022-11-20 03:01:59
  • Android实现点击切换视图并跳转传值

    2022-07-14 07:23:28
  • C#中标准的IDispose模式代码详解

    2022-03-27 01:40:05
  • 详解Java中Period类的使用方法

    2023-11-28 21:04:44
  • Java 实现协程的方法

    2022-02-18 22:55:05
  • 计算一个Java对象占用字节数的方法

    2022-06-14 18:05:21
  • C#中应用程序集的装载过程详解

    2023-03-30 19:06:05
  • C#实现关闭其他程序窗口或进程代码分享

    2022-05-26 07:38:03
  • 腾讯开源消息中间件TubeMQ总体介绍分析

    2022-06-21 05:10:03
  • android使用OkHttp实现下载的进度监听和断点续传

    2022-03-23 12:37:07
  • EditText监听方法,实时的判断输入多少字符

    2021-08-16 11:32:36
  • 老生常谈Java动态编译(必看篇)

    2022-04-02 14:19:38
  • 如何在Golang中运行JavaScript

    2022-11-03 14:50:48
  • 线程局部变量的实现 ThreadLocal使用及场景介绍

    2023-11-10 03:19:26
  • spring boot打包成可执行jar包

    2022-09-26 12:48:14
  • 如何在Intellij中安装LeetCode刷题插件方便Java刷题

    2023-10-16 21:38:08
  • JavaWeb Spring依赖注入深入学习

    2022-04-02 08:20:05
  • Java里的static在Kotlin里如何实现

    2023-08-24 20:25:33
  • 如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能

    2022-01-15 06:14:59
  • asp之家 软件编程 m.aspxhome.com