使用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来打包

三步:

1.在pom中添加如下:

<project>
    ...

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-pluginartifactId>
                <version>2.3version>
                <configuration>
                    <descriptor>src/main/assembly/assembly.xmldescriptor>
                configuration>
                <executions>
                    <execution>
                        <id>make-assemblyid>
                        <phase>packagephase>
                        <goals>
                            <goal>singlegoal>
                        goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>com.sample.TestMainmainClass>
                                manifest>
                            archive>
                        configuration>
                    execution>
                executions>
            plugin>
            ...

        plugins>
    build>

    <dependencies>
      ...

    dependencies>
project>

2.在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-testsid>
    <formats>
        <format>jarformat>
    formats>
    <includeBaseDirectory>falseincludeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/outputDirectory>
            <useProjectArtifact>trueuseProjectArtifact>
            <unpack>trueunpack>
            <scope>testscope>
        dependencySet>
    dependencySets>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/test-classesdirectory>
            <outputDirectory>/outputDirectory>
            <includes>
                <include>**/*.classinclude>
            includes>
            <useDefaultExcludes>trueuseDefaultExcludes>
        fileSet>
    fileSets>
assembly>

3.运行mvn package
在target目录下会生成一个xxxxx-1.0-SNAPSHOT-assembly.jar的文件,这就是我们需要的jar包了。我们可以用压缩软件看到生成的这个jar包中包含了test中所有的测试类。可以直接使用java -jar xxxxx-1.0-SNAPSHOT-assembly.jar来运行jar包。主类就是第一步中设置的那个类

使用maven将项目中的test代码打包进jar中_第1张图片

参考链接

你可能感兴趣的:(Java)