maven打可执行jar包pom配置

本文详细介绍了如何使用Maven构建工具配置pom.xml,以创建包含所有依赖项的可执行jar包。通过配置maven-shade-plugin和maven-jar-plugin插件,以及正确设置mainClass和资源文件,实现一键打包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven打可执行jar包pom配置如下:

<build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <!--包含文件夹以及子文件夹下所有资源-->
          <include>**/*.*</include>
        </includes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <!-- 指明编译源代码时使用的字符编码,
          maven编译的时候默认使用的GBK编码,
            通过encoding属性设置字符编码,
            告诉maven这个项目使用UTF-8来编译 -->
          <encoding>utf8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer
                  implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.thizgroup.main.MainClass</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>com.thizgroup.main.MainClass</mainClass> <!-- 此处为主入口-->
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

把这段配置复制到项目的pom文件中,需要修改mainClass的包路径,然后执行mvn clean package -Dmaven.test.skip=true

打包,

打包,在命令行窗口运行jar,

 java -jar .\tank-01-1.0-SNAPSHOT.jar

运行可能会出现配置文件或者其他资源文件找不到的情况,比如,

Exception in thread "main" java.lang.ExceptionInInitializerError
        at com.mashibing.tank.TankFrame.<clinit>(TankFrame.java:19)
        at com.mashibing.tank.Main.main(Main.java:6)
Caused by: java.lang.NullPointerException
        at java.util.Properties$LineReader.readLine(Unknown Source)
        at java.util.Properties.load0(Unknown Source)
        at java.util.Properties.load(Unknown Source)
        at com.mashibing.tank.PropertyMgr.<clinit>(PropertyMgr.java:18)
        ... 2 more

原因可能是打包没有把这个资源文件打进去,使用压缩工具打开jar包看看里面是不是存在这个资源文件,如果不存在则考虑打包的资源文件配置有问题,修改resources的配置后重新打包即可

<resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <!--包含文件夹以及子文件夹下所有资源-->
          <include>**/*.*</include>
        </includes>
      </resource>
    </resources>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值