IDEA+Maven 打jar包[通俗易懂]

IDEA+Maven 打jar包[通俗易懂]IDEA+Maven打jar包(包涵依赖jar)写在前面:​这两天一直在整(gu)理(dao)IDEA用Maven打jar包,网上的教程是各式各样,但是都不能满足我的需求(或者还没有找个正确的),因此综合网上的内容自己整理了一下(以下内容是在mac系统下win可能有一些地方不一样)。软件环境:​IDEA:2017.1.5​Maven:3.3.9…

大家好,又见面了,我是你们的朋友全栈君。

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. 点击【+】 选择【JAR】,【From modules with dependencies】点击【ok】
      这里写图片描述
    3. 点击【1】选择你要打包的Module,点击【2】选择你的主类(也就是你的程序的入口)然后点击【ok】这里写图片描述
    4. 点击【ok】
      这里写图片描述
    5. 【1】是要打的jar包的名字,【2】是jar包的输出路径,【3】是程序所需要的jar依赖,【4】是程序主类的名称。因为这里是打没有依赖的jar包,所以将【3】里面不需要的jar包删掉就行。最后点击【ok】这里写图片描述
    6. 然后就会生成一个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管理工具
        这里写图片描述

      3. 点击【package】
        这里写图片描述

      4. 等运行完以后就会生成jar包了
        这里写图片描述

    • 打包涵依赖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>
  • 方案一:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.test.MainClass</mainClass>   <!--带有包路径的MainClass -->
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>
  • 方案二:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.test.MainClass</mainClass>   <!--带有包路径的MainClass -->
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>

    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

注:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139237.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • IDEA安装教程(傻瓜式安装)

    IDEA安装教程(傻瓜式安装)IDEA安装教程1.文件下载1.idea下载2.PJ文件下载2.idea安装步骤3.PJ导包1.文件下载1.idea下载下载地址.版本为2020.1为例2.PJ文件下载下载地址.密码:d79t选择版本进行下载。2.idea安装步骤1.双击打开软件,点击Next2.选择安装目录,然后点击Next(然后会卡一会,取决于电脑性能,在此操作之间,不要着急)3.选择64位,就可以,其他选项看自己需要,然后点击Next4.无需选择,直接点击Install,5.然后点击Finish,完成

  • mac idea2021 激活码(JetBrains全家桶)

    (mac idea2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~41MD…

  • goland 激活码(破解版激活)「建议收藏」

    goland 激活码(破解版激活),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Idea卸载及安装

    Idea卸载及安装一Idea目录1.开发工具目录可以安装在D盘2.C盘用户用户名.Idea…..config配置文件(所有”工作区”使用这一个配置文件若想改成默认直接删掉即可会自动加载)system系统文件(删掉会自动加载)二Idea卸载控制面板程序程序和功能卸载彻底的卸载可以都勾上卸完重启电脑重新安装保险三Idea安装网址:https://www.jetbrains.com/idea/download/#section=…

  • navicat 最新激活码-激活码分享

    (navicat 最新激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32P…

  • pcharm激活码最新【在线注册码/序列号/破解码】[通俗易懂]

    pcharm激活码最新【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号