java maven打包 心得

本文主要是个人使用的几种maven打包的心得

一. maven 打包普通java项目

利用 maven-assembly-plugin 插件以及 maven-compiler-plugin 插件

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>utf-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>package.class</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>

利用上面的代码可以把整个项目打包成可执行jar包(包括项目所需的依赖包)

 

需要注意的有几点:

1. 有的时候打包会出现编码问题

[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!

[INFO] Compiling 1 source file to D:\***\target\classes

[WARNING] /D:/***/src/main/java/Test.java:[4,48] 编码GBK的不可映射字符

[WARNING] /D:/***/src/main/java/Test.java:[4,62] 编码GBK的不可映射字符

这是因为编译时的编码问题,解决方法有:
(1)在maven-compiler-plugin插件的configuration中加入<encoding>utf-8</encoding>

(2)pom中加入

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

2. <executions>标签

如果assembly插件中含有如上示例的<executions>标签内容,则直接通过命令 mvn package 即可打包

如果不含有<executions>标签内容,通过命令 mvn package assembly:single 即可打包

3. 打包含有多个main方法的项目

运行时命令由java -jar *.jar 改为 java -cp *.jar 包名.类名(主方法所在的类)  

jar命令默认是使用pom中<mainClass>定义的main方法路径,去寻找目录META-INF\MANIFEST.MF文件,在该文件中,有一个叫Main-Class的参数,cp命令可以主动去寻找某个main方法的路径

 

二. maven打包spring-boot项目

这个主要利用spring-boot提供的maven插件

<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>

打包命令很简单 mvn package。需要注意的是通常程序员在写项目时会建立一些test 文件,里面存放了对应于各种service的test方法,该类方法通常使用了junit框架,而maven打包时不会把这个框架也打包进去,因而会报错。因而在package后加上-Dmaven.test.skip=true参数,意思是忽略test文件

此外,注意mvn clean时要在项目根目录下clean

三. 打包maven中央仓库没有的第三方jar包

需要手动把第三方jar包导入maven的本地仓库中,命令为

mvn install:install-file -Dfile=*.jar -DgroupId=* -DartifactId=* -Dversion=1.0 -Dpackaging=jar

Dfile后为jar包名, groupId和artifactId按标准格式自己命名,然后可以在pom中按照groupId和artifactId导入依赖,再按照通常maven打包的方式即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值