ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IDEA+Maven 打jar包

2022-03-21 12:35:26  阅读:200  来源: 互联网

标签:xml maven assembly plugin jar IDEA Maven


IDEA+Maven 打jar包 (包涵依赖jar)

最新修改
以前写的打包方式可能看起来有些繁琐,这里给出进一步简洁的解决方案简单粗暴

写在前面:

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

软件环境:

IDEA:2017.1.5

Maven:3.3.9

打jar包:

  • IDEA 自带的打包工具使用

    • 打无依赖jar包

      1. 如果工程目录中有以下文件夹 删掉
        这里写图片描述
    1. 点击工程上方【File】菜单选择【Project Structure】
      这里写图片描述
    2. 然后就会生成一个META-INF的文件夹,里面就是一些配置属性
    • 打包涵依赖jar包
      对以上的方式中的步骤6中 不做任何修改,然后执行步骤7

  • Maven 打包
    • 打无依赖jar包

      1. 在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> 
        
      2. 点开Maven管理工具
        这里写图片描述

    • 打包涵依赖jar包
      第一种方法
      1. 在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>
      
      1. 然后执行上面【Maven 打无依赖包】步骤2到步骤4

      第二种方法

      1. 在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>
        
      2. 创建【src/main/assembly】目录

      3. 创建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>
        
      4. 将【package.xml】文件放入【assembly】文件夹中
        这里写图片描述

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

如果要打包scala代码需要添加插件:
方案一:

 <plugin>
     <groupId>net.alchim31.maven</groupId>
     <artifactId>scala-maven-plugin</artifactId>
     <version>3.4.0</version>
     <executions>
         <execution>
             <goals>
                 <goal>compile</goal>
                 <goal>testCompile</goal>
             </goals>
         </execution>
     </executions>
 </plugin>

方案二:

	<plugin>
		<groupId>org.scala-tools</groupId>
		<artifactId>maven-scala-plugin</artifactId>
 		<version>2.15.2</version>
 		<executions>
         	<execution>
            	 <goals>
                 	<goal>compile</goal>
                 	<goal>testCompile</goal>
            	 </goals>
         	</execution>
     	</executions>
	</plugin>

推荐方案一,方案二中的插件最新更新日期是2011年

简单粗暴
将下面的任意一种方案放到pom文件中,并修改成自己项目中的MainClass即可

</plugins>
    </build>
     方案一 or 方案二
     <build>
<plugins>
  • 方案一:

    org.apache.maven.plugins maven-shade-plugin 3.0.0 package shade com.test.MainClass
  • 方案二:

    org.apache.maven.plugins maven-assembly-plugin 2.4 com.test.MainClass jar-with-dependencies
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    

注:

本文属于作者原创,如需转载,请注明。

内部如果引用的文字,连接,图片等资源存在侵犯原作者的情况,请联系本人,立即删除。

标签:xml,maven,assembly,plugin,jar,IDEA,Maven
来源: https://blog.csdn.net/asdfadafd/article/details/123632296

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有