IDEA+Maven 打jar包

IDEA+Maven 打jar包 (包涵依赖jar)
写在前面:

​ 这两天一直在整(gu)理(dao)IDEA 用Maven打jar包,网上的教程是各式各样,但是都不能满足我的需求(或者 还没有找个正确的),因此 综合网上的内容 自己整理了一下(以下内容是在mac系统下 win 可能有一些地方不一样)。

软件环境:

​ IDEA:2017.1.5

​ Maven:3.3.9

打jar包:

IDEA 自带的打包工具使用

打无依赖jar包

如果工程目录中有以下文件夹 删掉 

点击工程上方【File】菜单选择【Project Structure】 

点击【+】 选择【JAR】,【From modules with dependencies】点击【ok】 

点击【1】选择你要打包的Module,点击【2】选择你的主类(也就是你的程序的入口)然后点击【ok】
点击【ok】 

【1】是要打的jar包的名字,【2】是jar包的输出路径,【3】是程序所需要的jar依赖,【4】是程序主类的名称。因为这里是打没有依赖的jar包,所以将【3】里面不需要的jar包删掉就行。最后点击【ok】
然后就会生成一个META-INF的文件夹,里面就是一些配置属性
打包涵依赖jar包 
对以上的方式中的步骤6中 不做任何修改,然后执行步骤7

Maven 打包

打无依赖jar包

在pom.xml 文件里加入

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <version>2.4</version>
     <configuration>
       <archive>
             生成的jar中,不要包含pom.xml和pom.properties这两个文件
         <addMavenDescriptor>false</addMavenDescriptor>
         <manifest>
               是否要把第三方jar放到manifest的classpath中
           <addClasspath>true</addClasspath>
              生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/
           <classpathPrefix>lib/</classpathPrefix>
               应用的main class
           <mainClass>com.yourClass</mainClass>
         </manifest>
       </archive>
           过滤掉不希望包含在jar中的文件
       <excludes>
         <exclude>${project.basedir}/xml/*</exclude>
       </excludes>
    </configuration>
</plugin> 

点开Maven管理工具 


点击【package】 


等运行完以后就会生成jar包了 

打包涵依赖jar包 
第一种方法

在pom.xml文件中写入

<build>
  <plugins>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>3.1</version>
   </plugin>
   <plugin>
     <artifactId>maven-assembly-plugin</artifactId>
     <configuration>
       <archive>
         <manifest>
           <mainClass>com.test.app</mainClass>
         </manifest>
       </archive>
       <descriptorRefs>
         <descriptorRef>jar-with-dependencies</descriptorRef>
       </descriptorRefs>
     </configuration>
     <!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
     <executions>
       <execution>
         <id>make-assemble</id>
         <phase>package</phase>
         <goals>
           <goal>single</goal>
         </goals>
       </execution>
     </executions>
   </plugin>
  </plugins>
</build>

然后执行上面【Maven 打无依赖包】步骤2到步骤4

第二种方法

在pom.xml文件中写入

<plugin>
<groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-jar-plugin</artifactId>
 <version>2.4</version>
 <configuration>
   <archive>
        <!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件-->
     <addMavenDescriptor>false</addMavenDescriptor>
     <manifest>
           <!--是否要把第三方jar放到manifest的classpath中-->
       <addClasspath>true</addClasspath>
          <!--生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/-->
       <classpathPrefix>lib/</classpathPrefix>
          <!-- 应用的main class-->
       <mainClass>com.yourClass</mainClass>
     </manifest>
   </archive>
     <!--  过滤掉不希望包含在jar中的文件-->
   <excludes>
     <exclude>${project.basedir}/xml/*</exclude>
   </excludes>
</configuration>
</plugin>

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-assembly-plugin</artifactId>
     <version>2.4</version>
     <configuration>
       <descriptors>
         <descriptor>src/main/assembly/package.xml</descriptor>
       </descriptors>
     </configuration>
     <executions>
       <execution>
         <id>make-assembly</id>
         <phase>package</phase>
         <goals>
           <goal>single</goal>
         </goals>
       </execution>
     </executions>
   </plugin>

创建【src/main/assembly】目录

创建package.xml文件

<assembly>
 <id>bin</id>
 <!-- 最终打包成一个用于发布的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>
         <includes>
             <include>README*</include>
             <include>LICENSE*</include>
             <include>NOTICE*</include>
         </includes>
     </fileSet>

     <!-- 把项目的配置文件,打包进zip文件的config目录 -->
     <fileSet>
         <directory>${project.basedir}\src\main\config</directory>
         <outputDirectory>config</outputDirectory>
         <includes>
             <include>*.xml</include>
             <include>*.properties</include>
         </includes>
     </fileSet>

     <!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->
     <fileSet>
         <directory>${project.build.scriptSourceDirectory}</directory>
         <outputDirectory></outputDirectory>
         <includes>
             <include>startup.*</include>
         </includes>
     </fileSet>

     <!-- 把项目的脚本文件(除了启动脚本文件),打包进zip文件的script目录 -->
     <fileSet>
         <directory>${project.build.scriptSourceDirectory}</directory>
         <outputDirectory></outputDirectory>

         <excludes>
             <exclude>startup.*</exclude>
         </excludes>
     </fileSet>

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

将【package.xml】文件放入【assembly】文件夹中 


然后执行上面【Maven 打无依赖包】步骤2到步骤4
注:
本文属于作者原创,如需转载,请注明。

内部如果引用的文字,连接,图片等资源存在侵犯原作者的情况,请联系本人,立即删除。 
--------------------- 
作者:branwel 
来源:CSDN 
原文:https://blog.csdn.net/branwel/article/details/79918018 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值