首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在maven-shade-plugin创建的Jar中包含测试类?

在 Maven-shade-plugin 创建的 Jar 中包含测试类,可以通过在 Maven 项目的 pom.xml 文件中添加 shadeTest 插件来实现。shadeTest 插件可以将在 src/test/java 目录下的测试类打包到生成的 JAR 文件中。

具体实现步骤如下:

  1. pom.xml 文件中添加 shadeTest 插件,如下所示:
代码语言:xml
复制

<build>

代码语言:txt
复制
   <plugins>
代码语言:txt
复制
       <plugin>
代码语言:txt
复制
           <groupId>org.apache.maven.plugins</groupId>
代码语言:txt
复制
           <artifactId>maven-shade-plugin</artifactId>
代码语言:txt
复制
           <version>3.2.1</version>
代码语言:txt
复制
           <configuration>
代码语言:txt
复制
               <createDependencyReducedPom>false</createDependencyReducedPom>
代码语言:txt
复制
               <filters>
代码语言:txt
复制
                   <filter>
代码语言:txt
复制
                       <artifact>*:*</artifact>
代码语言:txt
复制
                       <excludes>
代码语言:txt
复制
                           <exclude>META-INF/*.SF</exclude>
代码语言:txt
复制
                           <exclude>META-INF/*.DSA</exclude>
代码语言:txt
复制
                           <exclude>META-INF/*.RSA</exclude>
代码语言:txt
复制
                       </excludes>
代码语言:txt
复制
                   </filter>
代码语言:txt
复制
               </filters>
代码语言:txt
复制
           </configuration>
代码语言:txt
复制
           <executions>
代码语言:txt
复制
               <execution>
代码语言:txt
复制
                   <phase>package</phase>
代码语言:txt
复制
                   <goals>
代码语言:txt
复制
                       <goal>shade</goal>
代码语言:txt
复制
                   </goals>
代码语言:txt
复制
                   <configuration>
代码语言:txt
复制
                       <transformers>
代码语言:txt
复制
                           <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
代码语言:txt
复制
                               <manifestEntries>
代码语言:txt
复制
                                   <Main-Class>com.example.TestClass</Main-Class>
代码语言:txt
复制
                                   <Class-Path>.</Class-Path>
代码语言:txt
复制
                               </manifestEntries>
代码语言:txt
复制
                           </transformer>
代码语言:txt
复制
                       </transformers>
代码语言:txt
复制
                   </configuration>
代码语言:txt
复制
               </execution>
代码语言:txt
复制
           </executions>
代码语言:txt
复制
       </plugin>
代码语言:txt
复制
   </plugins>

</build>

代码语言:txt
复制

在上述代码中,<plugin> 标签指定使用 maven-shade-plugin 来创建包含测试类的 JAR 文件,<configuration> 标签指定生成 JAR 文件的名称、版本等信息,<transformers> 标签指定将测试类打包到 JAR 文件中的转换规则。

  1. 在测试类中,使用 java -jar 命令运行 JAR 文件,如下所示:
代码语言:java
复制

public class TestClass {

代码语言:txt
复制
   public static void main(String[] args) {
代码语言:txt
复制
       System.out.println("Hello, world!");
代码语言:txt
复制
   }

}

代码语言:txt
复制

在上述代码中,TestClass 定义了一个 main 方法,可以在运行时输出 "Hello, world!"。使用 java -jar 命令运行 JAR 文件时,会自动调用 main 方法。

如果需要在其他环境下运行测试类,可以将 main 方法的访问修饰符改为 public,并且手动创建 java 命令的参数列表,然后运行命令。例如:

代码语言:java
复制

public class TestClass {

代码语言:txt
复制
   public static void main(String[] args) {
代码语言:txt
复制
       System.out.println("Hello, world!");
代码语言:txt
复制
   }

}

代码语言:txt
复制

在上述代码中,将 main 方法的访问修饰符改为 public,以便在运行时可以被找到。然后,在命令行中输入以下命令来运行测试类:

代码语言:txt
复制

java -cp target/my-test-jar.jar com.example.TestClass

代码语言:txt
复制

在上述命令中,-cp 参数指定了运行时所需的类路径,com.example.TestClass 指定了要运行的测试类。

以上就是在 Maven-shade-plugin 的 JAR 中包含测试类的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券