zoukankan      html  css  js  c++  java
  • 记录一次maven打包时将test目录下的类打包到jar中,Maven Assembly Plugin的使用

    今天有人问我打包后找不到主类,运行的类写在test中.按照常规,test目录下的文件不会打包到jar包中.(但是我测试一个springboot工程就可以,这里之后再研究)

    具体解决如下

    第一步:在pom文件中引入Maven Assembly Plugin插件 (注意:如果含有其他打包插件,最好先排除掉干扰)

    复制代码
     1             <plugin>
     2                 <artifactId>maven-assembly-plugin</artifactId>
     3                 <version>2.3</version>
     4                 <configuration>
     5                     <descriptor>src/main/resources/assembly.xml</descriptor>
     6                 </configuration>
     7                 <executions>
     8                     <execution>
     9                         <id>make-assembly</id>
    10                         <phase>package</phase>
    11                         <goals>
    12                             <goal>single</goal>
    13                         </goals>
    14                         <configuration>
    15                             <archive>
    16                                 <manifest>
    17                                     <mainClass>com.lingzhi.jedis.JedisTest</mainClass>
    18                                 </manifest>
    19                             </archive>
    20                         </configuration>
    21                     </execution>
    22                 </executions>
    23             </plugin>
    24 
    25         </plugins>
    26     </build>
    复制代码

    第二步:在resources目录下创建插件的配置文件,这里名称为assembly.xml

    复制代码
     1 <assembly
     2         xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
     3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4         xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
     5     <id>fat-tests</id>
     6     <formats>
     7         <format>jar</format>
     8     </formats>
     9     <includeBaseDirectory>false</includeBaseDirectory>
    10     <dependencySets>
    11         <dependencySet>
    12             <outputDirectory>/</outputDirectory>
    13             <useProjectArtifact>true</useProjectArtifact>
    14             <unpack>true</unpack>
    15             <scope>test</scope>
    16         </dependencySet>
    17     </dependencySets>
    18     <fileSets>
    19         <fileSet>
    20             <directory>${project.build.directory}/test-classes</directory>
    21             <outputDirectory>/</outputDirectory>
    22             <includes>
    23                 <include>**/*.class</include>
    24             </includes>
    25             <useDefaultExcludes>true</useDefaultExcludes>
    26         </fileSet>
    27     </fileSets>
    28 </assembly>
    复制代码

    第三步,maven 打包

    结果如上图,有两个jar包,其中下面这个就是包括test的,上面是默认情况

    在配置文件中引入assembly插件时,有一些东西需要按照实际情况进行更改,比如主类入口,配置文件路径

    打包并测试

    执行maven命令:

    mvn clean compile test-compile assembly:single

    运行jar包:

    java -jar test-1.0-assembly.jar

  • 相关阅读:
    javascript转换时间戳
    解决 Out of range value adjusted for column 'ID' at row 1
    解决 ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
    解决 nfs挂载错误wrong fs type, bad option, bad superblock
    修改浏览器Cookie
    elasticsearch备忘
    itextpdf 备忘
    重命名和移动
    win10 教育版本变专业版本
    解决com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intellij.
  • 原文地址:https://www.cnblogs.com/yuluoxingkong/p/11836182.html
Copyright © 2011-2022 走看看