编程知识 cdmana.com

IDEA+Maven install打可运行jar包

IDEA+Maven install打可运行jar包

    • 一、用途
    • 二、配置Maven编译插件
      • 1、新建mavan项目
      • 2、引入maven配置
    • 三、注意事项

一、用途

简单直接的想法就是想通过打出来的jar能够直接java -jar 运行,主要是想做一些小的工具运行程序,比如加解密的小程序

其实idea和eclipse等编程工具本身就支持工程打jar ,但是这种方式打出来的jar一般都是缺少程序主清单,不能运行,所以我们考虑用maven-assembly-plugin

二、配置Maven编译插件

1、新建mavan项目

这个就不用说了,比如我们这里想弄一个加解密的小程序,例如:DESUtil工具类

2、引入maven配置

在pom.xml里面加入:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-5</version>
                <configuration>
                    <archive>
                        <manifest>
                        	<!-- 这里配置你的程序入口main -->
                            <mainClass>util.DESUtils</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

打包方式:

这种如果package必须要加上 assembly:single,否则只会生成一个test-1.0-SNAPSHOT.jar(这里的test是项目名), 且运行时会报错:jar中没有主清单属性

需要执行以下命令:

mvn package assembly:single 

打包后会在target目录下生成一个test-jar-with-dependencies.jar文件,这个文件不但包含了自己项目中的代码和资源,还包含了所有依赖包的内容。所以可以直接通过java -jar来运行

如果不想这么麻烦,想直接在idea中maven package打包的话,加上如下配置:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-5</version>
                <configuration>
                    <archive>
                        <manifest>
                        	<!-- 这里配置你的程序入口main -->
                            <mainClass>util.DESUtils</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>
        </plugins>
    </build>

其中package、single即表示在执行package打包时,执行assembly:single,所以可以直接使用mvn package打包

三、注意事项

如果我们maven的settings.xml里面配置的镜像地址是私服,这里最好改成maven仓库,因为maven-assembly-plugin有很多的级联引用jar,不改成maven仓库地址的话,打包的很容易报缺少Class的异常 例如: A required class was missing while executing org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single: Lorg/apache/maven/shared/filtering/MavenFileFilter;

更改settings.xml

    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[执笔记忆的空白]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1764736

Scroll to Top