使用maven如何将项目中的test代码打包进jar中

 更新时间:2022年03月08日 11:25:23   作者:一个行走的民  
这篇文章主要介绍了使用maven如何将项目中的test代码打包进jar中,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

maven将项目的test代码打包进jar中

项目结构如下:

…/src/main/java/package/** <– application code

…/src/test/java/package/** <– test code

需求:

test中有一个包含main方法的主类TestMain.java,将main、test、全部依赖代码打包到一个jar包中,最终能通过java -jar的方式运行TestMain

这里Maven Jar Plugin 、 Maven Shade Plugin 都不是很适用。

我们选择Maven Assembly Plugin来打包

三步实现:

在pom中添加如下

<project>
    ...
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>com.sample.TestMain</mainClass>
                                </manifest>
                            </archive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
    </build>
    <dependencies>
      ...
    </dependencies>
</project>

在resources中添加一个assembly.xml文件

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>fat-tests</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>true</unpack>
            <scope>test</scope>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/test-classes</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>**/*.class</include>
            </includes>
            <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
    </fileSets>
</assembly>

运行mvn package

在target目录下会生成一个xxxxx-1.0-SNAPSHOT-assembly.jar的文件,这就是我们需要的jar包了。我们可以用压缩软件看到生成的这个jar包中包含了test中所有的测试类。

可以直接使用java -jar xxxxx-1.0-SNAPSHOT-assembly.jar来运行jar包。主类就是第一步中设置的那个类

参考链接

maven打包跳过test

在pom.xml文件中添加插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
    <skipTests>true</skipTests>
    </configuration>
</plugin>

使用mvn命令 带附加参数

mvn install -Dmaven.test.skip=true

或者

mvn install -DskipTests

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java8新特性-lambda表达式入门学习心得

    java8新特性-lambda表达式入门学习心得

    这篇文章主要介绍了java8新特性-lambda表达式入门学习心得,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java字节码增强技术知识点详解

    Java字节码增强技术知识点详解

    在本篇文章里小编给大家整理的是一篇关于Java字节码增强技术知识点详解内容,有兴趣的朋友可以跟着学习下。
    2021-08-08
  • SpringBoot访问HTML过程详解

    SpringBoot访问HTML过程详解

    这篇文章主要详细介绍了SpringBoot访问HTML的全过程,文章中有详细的代码和图片讲解,感兴趣的同学可以参考一下
    2023-04-04
  • java实现自动回复聊天机器人

    java实现自动回复聊天机器人

    这篇文章主要为大家详细介绍了java实现自动回复聊天机器人,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 如何在Java中使用正则表达式API

    如何在Java中使用正则表达式API

    这篇文章主要介绍了如何在Java中使用正则表达式API,我们将讨论java正则表达式API,以及如何在Java编程语言中使用正则表达式。具体详细介绍,需要的小伙伴可以参考下面文章内容
    2022-06-06
  • SpringBoot如何配置MySQL和Oracl双数据源(Mybatis)

    SpringBoot如何配置MySQL和Oracl双数据源(Mybatis)

    这篇文章主要介绍了SpringBoot如何配置MySQL和Oracl双数据源(Mybatis)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • SpringCloud Eureka服务发现实现过程

    SpringCloud Eureka服务发现实现过程

    这篇文章主要介绍了SpringCloud Eureka服务发现实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java基础详解之包装类的装箱拆箱

    Java基础详解之包装类的装箱拆箱

    这篇文章主要介绍了Java基础详解之包装类的装箱拆箱,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java开发之手把手教你搭建企业级工程SSM框架

    Java开发之手把手教你搭建企业级工程SSM框架

    这篇文章主要为大家介绍Java教程中搭建企业级工程SSM框架,手把手的过程操作,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • J2ME 程序开发注意要点

    J2ME 程序开发注意要点

    讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明
    2016-07-07

最新评论